在菜单的Android的 onOptionsItemSelected()方法中,我正在调用名为getQueries()的方法,该方法将确定选中的复选框,然后返回基于字符串的字符串在那。但是,每当我尝试从菜单中访问项目时,我都会得到一个空引用值。有任何想法吗?我的getQueries方法如下所示,如果需要,我可以提供更多代码。我想我可能正在初始化菜单错误,但我无法弄明白。提前致谢。
public String getQueries() {
String q = "";
Menu menu = (Menu)findViewById(R.menu.main_activity_actions);
if (menu.findItem(R.id.action_bread).isChecked()) {
q = "bread";
}
if (menu.findItem(R.id.action_cheese).isChecked()) {
q = "cheese";
}
Log.d("query", q);
return q;
}
答案 0 :(得分:1)
您可以在Menu
中存储对onCreateOptionsMenu()
的引用,稍后再使用。 findViewById(R.menu.whatever)
会返回null
。
答案 1 :(得分:1)
使您的代码有效:
public String getQueries(MenuItem itm)
{
String q = "";
switch (itm.getItemId())
{
case R.id.action_bread:
{
q = "bread";
break;
}
case R.id.action_bread:
{
q = "cheese";
break;
}
}
Log.d("query", q);
return q;
}
从onMnuItemSelected调用它,将MenuItem作为参数传递。
但我更愿意这样做:
(已将q声明为局部变量)
@Override
public final boolean onMenuItemSelected
(final int featureId, final MenuItem itm)
{
String q = "";
switch (itm.getItemId())
{
case R.id.action_bread:
{
q = "bread";
break;
}
case R.id.action_bread:
{
q = "cheese";
break;
}
}
Log.d("query", q);
return super.onMenuItemSelected(featureId, itm);
}