0

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

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

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

任何线索如何实现这一目标?PS:这是用 Xamarin 编写的 C# 代码。它可能看起来不像原生 java-android 代码,但几乎相同。

4

2 回答 2

0

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

动机:向现有的 TabActivity 添加一个“更多”选项卡。当用户单击它时,打开某种 PopUpWindow 或 ContextMenu 等。

这样做的步骤:

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

View v = TabWidget.GetChildAt(index)

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

于 2013-06-19T19:33:02.663 回答
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;

            }
        });


    }
于 2013-06-18T15:54:52.093 回答