android Setonclicklistener不适用于菜单项

时间:2012-07-04 16:23:13

标签: android

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

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>

我做错了什么?

2 个答案:

答案 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专门用于菜单项。