0

ビギナーから Android 開発まで。3 つの異なるタブを持つアプリケーションを開発しています。共通のメニューオプションが欲しい。問題は、メニュー項目をクリックしても何も起こらないことです。最初のタブのアクティビティに移動すると機能します。これが私の TabActivity メニューの実装です。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch(item.getItemId()) {
            case R.id.feedbackEmail:
                showDialog(FEEDBACK_DIALOG_ID);
                return true;
            case R.id.about:
                AboutBox.Show(this);
                return true;
            case R.id.Help:
                HelpBox.Show(this);
                return true;
            case R.id.Preferences:
                Intent intent = new Intent(this, Preferences.class);
                startActivity(intent);
                return true;
            case R.id.powerUsage:
                startActivity(intentPowerUsage);
                return true;
            case R.id.close:
                Intent homeIntent = new Intent(Intent.ACTION_MAIN);
                homeIntent.addCategory( Intent.CATEGORY_HOME );
                homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                Preferences.cancelNotification(this);
                startActivity(homeIntent);
                return true;
        }
        return super.onMenuItemSelected(featureId, item);
    }

これが私のmenu.xmlです

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/feedbackEmail"
          android:icon="@android:drawable/ic_dialog_email"
          android:title="@string/feedback" />
    <item android:id="@+id/Help"
          android:icon="@android:drawable/ic_menu_help"
          android:title="@string/menu_help" />
    <item android:id="@+id/Preferences"
          android:icon="@android:drawable/ic_menu_preferences"
          android:title="@string/preferences" />
    <item android:id="@+id/about"
          android:icon="@android:drawable/ic_menu_info_details"
          android:title="@string/menu_about" />
    <item android:id="@+id/powerUsage"
          android:icon="@android:drawable/ic_menu_today"
          android:title="@string/powerUsage" />
    <item android:id="@+id/close"
          android:icon="@android:drawable/ic_menu_close_clear_cancel"
          android:title="@string/exit" />
</menu>
4

2 に答える 2

2

あなたはこのようにすることができます、

という名前のアクティビティを作成し、BaseActivityこの Menu コードをそのBaseActivityに配置してから、必要なすべてのメニューを拡張しActivityます。この回答を確認しonKeyDown()て、すべてのアクティビティをオーバーライドする詳細なリファレンスを確認できます。

于 2012-04-12T04:46:36.787 に答える
0

以下のように、すべてのケースに break ステートメントを使用し、すべてのケースから return true を削除します::

public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch(item.getItemId()) {
            case R.id.feedbackEmail:
                showDialog(FEEDBACK_DIALOG_ID);
                break;
            case R.id.about:
                AboutBox.Show(this);
                break;
            case R.id.Help:
                HelpBox.Show(this);
                break;
            case R.id.Preferences:
                Intent intent = new Intent(this, Preferences.class);
                startActivity(intent);
                break;
            case R.id.powerUsage:
                startActivity(intentPowerUsage);
                break;
            case R.id.close:
                Intent homeIntent = new Intent(Intent.ACTION_MAIN);
                homeIntent.addCategory( Intent.CATEGORY_HOME );
                homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                Preferences.cancelNotification(this);
                startActivity(homeIntent);
                break;
        }
        return true;
    }
于 2012-04-11T11:16:55.057 に答える