0

Android 开发初学者。我正在开发一个应用程序,它有三个不同的选项卡。我想要有共同的菜单选项。问题是单击菜单项时没有任何反应。当我将它们移动到第一个选项卡的活动时,它可以工作。这是我的 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

你可以这样做,

创建一个名为 ActivityBaseActivity并将此菜单代码放入其中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 回答