如何设置第二个选项卡是第一个inTabHost

时间:2015-09-14 18:02:01

标签: android android-tabhost

我正在尝试先设置第二个标签页。所以我想这样做。

在我的MainActivity中,我扩展了FragmentActivity

我在全球范围内初始化Tabhost。

private TabHost mTabHost;

我在OnCreate

中调用以下方法
private void initialiseTabHost() {
        mTabHost = (TabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup();

        // TODO Put here your Tabs str_near_by str_best_offer
        MainActivity.AddTab(
                this,
                this.mTabHost,
                this.mTabHost.newTabSpec("Tab 1").setIndicator(
                        "Tab 1"));
        MainActivity.AddTab(this, this.mTabHost,
                this.mTabHost.newTabSpec("Tab 2").setIndicator("Tab 2"));
        MainActivity.AddTab(
                this,
                this.mTabHost,
                this.mTabHost.newTabSpec("Tab 3").setIndicator(
                        "Tab 3"));
        mTabHost.setCurrentTab(1); // Here I am setting the 2nd tab load first
        mTabHost.setOnTabChangedListener(this);
    }

但是我无法将第二个标签设置为先加载。

此外,我无法创建选项菜单。

我在MainActivity中添加以下代码。

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

但菜单也没有创建。请帮我解决这些问题。

1 个答案:

答案 0 :(得分:1)

尝试在MainActivity的onCreate()中实现它们,而不是使用静态方法。

喜欢

public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.activity_main);
    mTabHost = (TabHost) findViewById(android.R.id.tabhost);
    mTabHost.setup();

    // Tab 1
    TabSpec tab1Spec = tabHost.newTabSpec("Tab 1");
    // setting Title and Icon for the Tab
    tab1.setIndicator("Tab 1",getResources()
                      .getDrawable(R.drawable.icons_tab_one));
    Intent tab1Intent = new Intent(this, MainActivity.class);
    tab1Spec.setContent(tab1Intent);

    // Do the same for Tab 1,2 
    ...

    // Add tabs
    mTabHost.addTab(tab1Spec);
    mTabHost.addTab(tab2Spec);
    mTabHost.addTab(tab3Spec);


    mTabHost.setCurrentTab(1); // Now change the default tab
    mTabHost.setOnTabChangedListener(this);
}

对于onCreateOptionsMenu(),您需要执行类似此程序的操作。

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    myActionItem = menu.add(Menu.NONE, AI_ID_blah,
            AI_ID_blah, "My Action Item").setIcon(
            R.drawable.ic_my_action_item);
    myActionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
            | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    // add more items
    ...

    return true;
}

如果您想使用XML,可以执行以下操作

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

并在菜单XML(menu / activity_main.xml)

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/menu_settings" android:orderInCategory="100"   
        android:showAsAction="never" android:title="@string/menu_settings"/>
    <item android:id="@+id/item1" android:title="Option1"></item>
    <item android:id="@+id/item2" android:title="Option2"></item>
    <item android:id="@+id/item3" android:title="Option3"></item>
    <item android:id="@+id/item4" android:title="Option4"></item>
    <item android:id="@+id/item5" android:title="Option5"></item>
    <item android:id="@+id/item6" android:title="Option6"></item>
</menu>