Android:NullPointerException:尝试调用null对象引用的接口方法



我知道这个问题以前已经问过很多次了,但是我已经把前面所有的问题都看过了,还不能把答案应用到我的具体问题上。

我在我的设置中有一个SwitchPreference开关打开或关闭一组特定的活动。该活动集包含在菜单中,所以我希望能够在无效时隐藏项目。

在我的菜单中,项由

定义
<item
android:id="@+id/action_most_recent_summary"
android:orderInCategory="20"
android:visible="true"
android:title="@string/action_most_recent_summary"
app:showAsAction="never" />

然后在MainActivity中我用

创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean do_inc_summary = sharedPreferences.getBoolean("summary", false);
if (do_inc_summary) {
menu.findItem(R.id.action_most_recent_summary).setVisible(true);
}
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

有时它不工作!

有时应用程序崩溃,我在logcat

中得到以下错误
java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.MenuItem.setVisible(boolean)' on a null object reference
at com.example.cgpagerv2.MainActivity.onCreateOptionsMenu(MainActivity.java:52)

第52行是菜单。findItem线。我想它告诉我要么是菜单要么是;或";do_inc_summary"是空的,但我不明白为什么

您试图在充气前访问项目,充气后实例将可用

@Override
public boolean onCreateOptionsMenu(Menu menu) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean do_inc_summary = sharedPreferences.getBoolean("summary", false);
//inflate first
getMenuInflater().inflate(R.menu.menu_main, menu);
//then access
if (do_inc_summary) {
menu.findItem(R.id.action_most_recent_summary).setVisible(true);
}
return true;
}

相关内容

  • 没有找到相关文章

最新更新