访问Android菜单项

时间:2013-12-22 01:43:00

标签: android

菜单的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;
}

2 个答案:

答案 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);
}