0

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

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>

我究竟做错了什么?

4

2 回答 2

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

于 2012-07-04T16:28:17.303 回答
0

对于菜单项,如 Sajmon 所述,您可以使用 onOptionsIemsSelected 函数。onClickListener 由视图使用,而此功能被设计为专门由使用 switch case 的菜单项使用。

于 2015-03-17T18:52:28.020 回答