0

1 つの項目だけを含むメニューがあります。

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);

終了ボタンにリスナーを追加すると、例外 (null ポインター) が表示されます。構文エラーはないと確信しています。終了ボタンはこのメニューから来ています。

<?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、これは私には意味がありません。膨らませてonOptionsItemSelectedメソッドをオーバーライドするMenuだけです。

@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 に答える