Tabhost未更新选项卡

时间:2017-10-23 20:41:51

标签: java android android-tabhost

我试图在项目中使用垂直标签,但我无法让tabhost工作。我认为我没有从Java中获益,但我不确定我做错了什么。只有很多例子,但它们似乎已经过时了。似乎tabhost已经发生了很大的变化,所以我不确定正确的语法。这是我的xml:

 <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost" ...>
    <LinearLayout android:orientation="horizontal"...>
        <FrameLayout ...>
            <TabWidget
                android:id="@android:id/tabs"
                android:visibility="gone" .../>

            <LinearLayout
                android:orientation="vertical" ...>

                <Button
                    android:id="@+id/button_map"
                    android:onClick="tabHandler" .../>

                <Button
                    android:id="@+id/button_chat"
                    android:onClick="tabHandler" .../>

                <Button
                    android:id="@+id/button_player_stat"
                    android:onClick="tabHandler" ... />

                <Button
                    android:id="@+id/button_dest_card"
                    android:onClick="tabHandler" .../>
            </LinearLayout>
        </FrameLayout>
        <FrameLayout android:id="@android:id/tabcontent" ...>

        <LinearLayout
            android:id="@+id/tab1"
            android:orientation="vertical" ...>

            <TextView
                android:text="This is tab 1" .../>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/tab2" 
            android:orientation="vertical" ...>

            <TextView
                android:text="This is tab 2" ... />
        </LinearLayout>
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
    </TabHost>

然后在java上我试图这样做:

@Override
    protected void onCreate(Bundle savedInstanceState) {
       ....
        tabHost = (TabHost) findViewById(android.R.id.tabhost);
        tabHost.setup();
    }

然后是tabHandler

public void tabHandler(View target){
        button_map.setSelected(false);
        button_chat.setSelected(false);
        if(target.getId() == R.id.button_map){
            tabHost.setCurrentTab(0);
            button_map.setSelected(true);
        } else if(target.getId() == R.id.button_chat){
            tabHost.setCurrentTab(1);
            button_chat.setSelected(true);
        } 
        }

当我尝试运行时,当我点击&#34;标签&#34;(我的按钮)时没有任何反应。代码到了正确的位置,但我认为findview()得到了错误的tabHost。在调试器上,我看到tabhost currentTab设置为-1,这就是为什么我认为它是错误的tabhost。我也尝试将tabhost从&#34; @android:id / tabhost更改为@ + id / tabhost,但是当使用setup()时会抛出异常,抱怨它应该是@android:id / tabhost。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

不要在新应用中使用TabHost来实现标签。而是Use a ViewPager

如果符合您的使用案例,您还可以使用Android支持库中的底部导航视图。 Here is one relevant tutorial