我试图在项目中使用垂直标签,但我无法让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。任何帮助将不胜感激!
答案 0 :(得分:1)
不要在新应用中使用TabHost来实现标签。而是Use a ViewPager。
如果符合您的使用案例,您还可以使用Android支持库中的底部导航视图。 Here is one relevant tutorial