我已经离开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;
}
答案 0 :(得分:3)
当我在eclipse上开发android时,这种情况多次发生在我身上,并且清理和重建项目修复它,因为它将重新创建android资源文件并正确映射到您的UI id。
答案 1 :(得分:1)
在您的XML中,您有ID = add_one_id但在代码中使用了R.id.add_single_id