0

私はAndroid開発の初心者で、メニュー項目のリスナーを機能させるのに問題があります。メニュー項目をクリックすると、トーストが表示されるはずですが、何も起こりません。正しいインポートがあり、menuitem リスナーを実装しているので、なぜ機能しないのかわかりません。どんな助けでも大歓迎です。

//ABS MenuItem import
import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener;

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    menu.add(0,1,0,"Gender").setIcon(R.drawable.female_icon).setOnMenuItemClickListener(this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    menu.add(0,2,0,"Flip").setIcon(R.drawable.flip_icon).setOnMenuItemClickListener(this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    menu.add(0,3,0,"Preferences").setIcon(R.drawable.ic_action_example).setOnMenuItemClickListener(RemedyActivity.this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    menu.add(0,4,0,"Help").setIcon(R.drawable.info).setOnMenuItemClickListener(RemedyActivity.this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);


    //Side Navigation
    getSupportMenuInflater().inflate(R.menu.main_menu, menu);
    if (sideNavigationView.getMode() == Mode.RIGHT) {
        menu.findItem(R.id.mode_right).setChecked(true);
    } else {
        menu.findItem(R.id.mode_left).setChecked(true);
    }
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onMenuItemClick(MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId())
    {
        case 1:   
            Toast mToast = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT);
            return true;  

        case 2:   
            Toast mToast2 = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT);
            return true;
    }
    return false;
}

編集

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            sideNavigationView.toggleMenu();
            break;
        case R.id.mode_left:
            item.setChecked(true);
            sideNavigationView.setMode(Mode.LEFT);
            break;
        case R.id.mode_right:
            item.setChecked(true);
            sideNavigationView.setMode(Mode.RIGHT);
            break;
        case 1:   // id from the xml file
            Toast mToast = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT);
            break;   // we handled the click, dont pass it up the chain

        case 2:   // id from the xml file
            Toast mToast2 = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT);
            break;

        default:
            return super.onOptionsItemSelected(item);
    }
    return true;
}
4

3 に答える 3

1

サイド ナビゲーションを使用しているときに、トーストを表示しようとしていることに気付きました。過去にこのライブラリでトーストを表示しようとすると、いくつかの問題が発生しました。ボタンが実際に機能しているかどうかを判断するには、NSLog などの別の方法を試してください。

于 2013-05-05T05:14:19.740 に答える
0

オーバーライドしてみる

@Override
public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            ...
       }
    }

の代わりにonMenuItemClick

于 2013-05-04T17:29:29.353 に答える
0

return super.onCreateOptionsMenu(menu);あなたの問題かもしれません。ドキュメントによると、「メニューを表示するには true を返す必要があります。false を返すと表示されません。」

super.onCreateOptionsMenu が常に false を返す場合 (おそらくそうなります)、メニューは表示されません。

また、トーストを作成しますが、表示しません。を明示的に呼び出す必要がありますshow()。現在の Eclipse プラグインは、それについて警告を表示するはずです。

于 2013-05-05T05:33:55.323 に答える