android Setonclicklistener 不适用于菜单的项目



我有一个只包含一个项目的菜单。

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>

我做错了什么?

没有必要

初始化Button这对我来说没有意义。只需充气您的Menu覆盖 OptionsItemSelected 方法:

@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方法,您应该使用它。

对于菜单项,如Sajmon所述,您可以使用onOptionsIemsSelected函数。 onClickListener 由视图使用,而此函数被设计为专门用于使用开关大小写的菜单项。

最新更新