我有一个只包含一个项目的菜单。
Button exit;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
MenuInflater blowUp = getMenuInflater();
blowUp.inflate(R.menu.exitmenu, menu);
return true;
}
exit=(Button)findViewById(R.id.bexitMenuExit);
如果我将监听器添加到退出按钮,我得到了excpetion(空指针),我确信没有语法错误,按钮退出来自此菜单
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/bexitMenuExit"
android:title="Exit"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
></item>
</menu>
我做错了什么?
答案 0 :(得分:2)
无需初始化Button
,这对我来说没有任何意义。
只需夸大Menu
,只需覆盖onOptionsItemSelected 方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
new MenuInflater(getApplicationContext()).inflate(R.menu.exitmenu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getId()) {
case R.id.bexitMenuExit:
// work that will start when you click on this
...
}
}
此外,无需使用OnClickListener
,因此有onOptionsItemSelected
方法,您应该使用它。
答案 1 :(得分:0)
对于菜单项,如Sajmon所述,您可以使用onOptionsIemsSelected函数。 onClickListener由视图使用,而此功能设计为使用switch case专门用于菜单项。