首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullPointerException同时显示OptionsMenu

NullPointerException同时显示OptionsMenu
EN

Stack Overflow用户
提问于 2015-02-26 09:33:16
回答 2查看 760关注 0票数 3

我需要以编程的方式创建菜单(与选项卡列表完全相同),以支持我的应用程序中的导航。所以我做了这样的代码

代码语言:javascript
复制
public override bool OnCreateOptionsMenu (IMenu menu)
{
    base.OnCreateOptionsMenu (menu);
    for (int i = 0; i < fragmentsTabs.Count; i++) {
        menu.Add(0,100 + i,i,new Java.Lang.String(fragmentsTabs.GetItem(i).Key));
    }
    return true;
}

但是,当我单击菜单按钮时,我会得到这样的异常:

代码语言:javascript
复制
[AndroidRuntime] java.lang.NullPointerException
[AndroidRuntime]    at android.support.v7.internal.view.menu.ListMenuItemView.setTitle(ListMenuItemView.java:117)
[AndroidRuntime]    at android.support.v7.internal.view.menu.ListMenuItemView.initialize(ListMenuItemView.java:104)
[AndroidRuntime]    at android.support.v7.internal.view.menu.MenuPopupHelper$MenuAdapter.getView(MenuPopupHelper.java:377)
[AndroidRuntime]    at android.support.v7.internal.view.menu.MenuPopupHelper.measureContentWidth(MenuPopupHelper.java:219)
[AndroidRuntime]    at android.support.v7.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:153)
[AndroidRuntime]    at android.support.v7.widget.ActionMenuPresenter$OpenOverflowRunnable.run(ActionMenuPresenter.java:752)
[AndroidRuntime]    at android.os.Handler.handleCallback(Handler.java:733)
[AndroidRuntime]    at android.os.Handler.dispatchMessage(Handler.java:95)
[AndroidRuntime]    at android.os.Looper.loop(Looper.java:136)
[AndroidRuntime]    at android.app.ActivityThread.main(ActivityThread.java:5017)
[AndroidRuntime]    at java.lang.reflect.Method.invokeNative(Native Method)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Method.java:515)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
[AndroidRuntime]    at dalvik.system.NativeStart.main(Native Method)
[AndroidRuntime]    at android.support.v7.internal.view.menu.MenuPopupHel08.448 W/ActivityManager(  575):   Force finishing activity pl.media30.android.parlament/aplikacjaparlamentandroid.PersonDetailsActivity

我正在使用支持库中的工具栏:

代码语言:javascript
复制
Toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(Toolbar);
SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);

在另一部电话中,我可以获得更多关于NullPointerException的信息:

代码语言:javascript
复制
[AndroidRuntime] java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
[AndroidRuntime]    at android.support.v7.internal.view.menu.ListMenuItemView.setTitle(ListMenuItemView.java:117)
[AndroidRuntime]    at android.support.v7.internal.view.menu.ListMenuItemView.initialize(ListMenuItemView.java:104)
[AndroidRuntime]    at android.support.v7.internal.view.menu.MenuPopupHelper$MenuAdapter.getView(MenuPopupHelper.java:377)
[AndroidRuntime]    at android.support.v7.internal.view.menu.MenuPopupHelper.measureContentWidth(MenuPopupHelper.java:219)
[AndroidRuntime]    at android.support.v7.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:153)
[AndroidRuntime]    at android.support.v7.widget.ActionMenuPresenter$OpenOverflowRunnable.run(ActionMenuPresenter.java:752)
[AndroidRuntime]    at android.os.Handler.handleCallback(Handler.java:739)
[AndroidRuntime]    at android.os.Handler.dispatchMessage(Handler.java:95)
[AndroidRuntime]    at android.os.Looper.loop(Looper.java:135)
[AndroidRuntime]    at android.app.ActivityThread.main(ActivityThread.java:5221)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Native Method)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Method.java:372)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

有人知道为什么不创建TextView吗?什么才是问题。我在这个活动中有很多片段,但没有使用菜单。如果我创建一个图标,例如搜索,一切都正常。图标被正确创建,onclick处理得很好。只有在菜单项未显示为操作时才会出现问题。

@编辑

我的工具栏的axml是:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:scaleType="fitEnd"
        android:src="@drawable/side" />
</android.support.v7.widget.Toolbar>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-21 21:29:23

我也经历了两个小时的同样的麻烦。然后,在尝试了所有的事情之后,我决定“清理所有的”项目。在我这么做之后,一切都变得很有魅力。我在项目中更改并可能有所帮助的另一件事是用Support.v4导入替换所有正常的片段导入。

希望能帮上忙!

票数 5
EN

Stack Overflow用户

发布于 2017-07-29 16:22:59

也有同样的问题。对我来说,解决方案不是“构建->清洁”项目。这不管用!

所做的工作是对另一个堆栈溢出帖子:How to project clean in android studio?的Surb点击Rao的回答。

  1. 单击Gradle窗格,可在Android的右上角找到
  2. 导航到您的项目,然后任务-> build ->cleanBuildCache
  3. 右键单击cleanBuildCache,运行它。
  4. 完成之后,一定要运行-> "Run“,以避免一次又一次地运行cleanBuildCache脚本。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28738762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档