通过触摸TabActivity的选项卡打开OptionsMenu

时间:2013-06-18 15:41:13

标签: android menu android-tabhost tabactivity android-optionsmenu

我有一个tabActivity,我在运行时添加了标签。所以我认为这是通常的代码:

_tabSpec = TabHost.newTabSpec("More");
_tabSpec.setIndicator("", Resources.GetDrawable(Resources.Drawable.myIcon).SetContent(intent);
TabHost.AddTab(_tabSpec);

现在问题是,我已经定义了一个选项菜单,当用户点击“更多”标签时我想要弹出它。我不知道该怎么做。我尝试不在该标签上设置内容,只需使用OpenOptionsMenu()弹出它,但它似乎不起作用。

有任何线索如何实现? P.S。:这是用Xamarin编写的C#代码。它可能看起来不像本机java-android代码,但它几乎相同。

2 个答案:

答案 0 :(得分:0)

private String lastTab = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TabHost tabHost = getTabHost();

        TabHost.TabSpec tabSpec;

        tabSpec = tabHost.newTabSpec("tab1");
        tabSpec.setIndicator("Tab 1");
        tabSpec.setContent(new Intent(this, OneActivity.class));
        tabHost.addTab(tabSpec);

        tabSpec = tabHost.newTabSpec("tab2");
        tabSpec.setIndicator("Tab 2");
        tabSpec.setContent(new Intent(this, TwoActivity.class));
        tabHost.addTab(tabSpec);

        tabSpec = tabHost.newTabSpec("more");
        tabSpec.setIndicator("More");
        tabSpec.setContent(new Intent(this, OneActivity.class));
        tabHost.addTab(tabSpec);

        tabHost.setOnTabChangedListener(new OnTabChangeListener() {

            @Override
            public void onTabChanged(String tabId) {
                if (tabId.equalsIgnoreCase("more")){
                    openOptionsMenu();
                    tabHost.setCurrentTabByTag(lastTab);
                }
                else lastTab = tabId;

            }
        });


    }

答案 1 :(得分:0)

好的,这是我试图做的答案。

动机:在现有TabActivity中添加“更多”标签。当用户点击它时,打开某种PopUpWindow或ContextMenu等

执行此操作的步骤:

1)创建一个tabSpec并将该选项卡添加到TabHost中,如问题所示。 2)现在您需要将最后添加的选项卡作为View类型变量。这样做..

View v = TabWidget.GetChildAt(index)

记住标签索引从0开始 3)现在在主活动的onCreate()方法(一个包含TabActivity的方法)上添加onTouchListener()(我使用C#,所以我添加了v.Click+=myFunction())并编写了PopupWindow或ContextMenu的代码或者你想做什么。