Android选项菜单无法正常工作;我错过了什么?

时间:2011-06-23 02:29:30

标签: android menu

我已经离开Java一段时间了 - 函数式编程一直是我的缪斯 - 最近决定重新使用android应用程序。事情进展顺利。 Javas的语法大部分都在我脑海中,OO的设计原则有点生疏,但我不怕重新分解。

我遇到的一个问题是平台中的选项菜单。我在主要活动(下面)中通过菜单充气器从XML文件加载它们,我可以看到它们!但是,当我按下它们时,事情会变得奇怪 - 但不像看到你的祖母与你最好的朋友一起做出来,更不用说怪异了。

出于某种原因,当我按下第一个按钮时,我在下面的代码示例中收到了友好的default消息,“这不是一个选项,白痴!”。当我按下第二个时,消息是“添加一个”。不知怎的,我不知所措!但是,但是如何!?但为什么!?

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add_single_id"
          android:title="@string/add_one" />
    <item android:id="@+id/add_multi_id"
          android:title="@string/add_multi" />
</menu>

...由菜单充气器加载...

public boolean onCreateOptionsMenu( Menu menu ){
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.option_menu, menu);
    return true;
}

...最后是所选项目的监听器。

public boolean onOptionsItemSelected( MenuItem item ){
    switch( item.getItemId() ){
        case R.id.add_single_id:
            Toast.makeText(this, "Adding One", Toast.LENGTH_LONG).show();
            add_single();
            break;
        case R.id.add_multi_id:
            Toast.makeText(this, "Adding n", Toast.LENGTH_LONG).show();
            Intent i = new Intent(this, SelectMulti.class);
            startActivityForResult(i, ACTIVITY_LOADMULTI);
            break;
        default:
            Toast.makeText(this, "That's not an option, moron!", Toast.LENGTH_LONG).show();
            return false;
    }
    return true;
}

2 个答案:

答案 0 :(得分:3)

当我在eclipse上开发android时,这种情况多次发生在我身上,并且清理和重建项目修复它,因为它将重新创建android资源文件并正确映射到您的UI id。

答案 1 :(得分:1)

在您的XML中,您有ID = add_one_id但在代码中使用了R.id.add_single_id