Android:在带有标签的活动上显示菜单选项

时间:2011-10-11 10:56:10

标签: android android-sdk-2.1

我想在托管标签视图的活动中显示菜单选项。这是我的标签视图活动的代码。

public class Tabs3 extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TabHost tabHost = getTabHost();

        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("list")
                .setContent(new Intent(this, List1.class)));

        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("photo list")
                .setContent(new Intent(this, List8.class)));
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.removeGroup(0);

        menu.add(0, 0, 0, "Home").setIcon(
                android.R.drawable.ic_menu_preferences);

        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        switch (item.getItemId()) {
        case 0:
            setResult(10);
            finish();
            return true;
        }

        return super.onMenuItemSelected(featureId, item);
    }
}

现在,当我按下android菜单按钮时,onPrepareOptionsMenu被调用,这是正确的但是当我选择菜单选项时,没有任何反应。我还调试了我的代码,控件没有到达onMenuItemSelected

请帮忙。

1 个答案:

答案 0 :(得分:0)

我得到了我的解决方案..我不知道它是否是完美的方式,但它正在运作..

而不是使用onMenuItemSelected,我只使用了onOptionsItemSelected并且我的代码正在运行。

以下是最终代码:

public class Tabs3 extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TabHost tabHost = getTabHost();

        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("list")
                .setContent(new Intent(this, List1.class)));

        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("photo list")
                .setContent(new Intent(this, List8.class)));
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.removeGroup(0);

        menu.add(0, 0, 0, "Home").setIcon(
                android.R.drawable.ic_menu_preferences);

        return super.onPrepareOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case 0:
            setResult(10);
            finish();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}