【发布时间】:2017-10-23 20:41:51
【问题描述】:
我正在尝试在项目中使用垂直选项卡,但无法让 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);
}
}
当我尝试运行它时,当我单击“选项卡”(我的按钮)时没有任何反应。代码到达了正确的位置,但我认为 findview() 获取了错误的 tabHost。在调试器上,我看到 tabhost currentTab 设置为 -1,这就是为什么我认为它是错误的 tabhost。我还尝试将 tabhost 从“@android:id/tabhost 更改为 @+id/tabhost,但是在使用 setup() 时会引发异常,它抱怨它应该是 @android:id/tabhost。任何帮助将不胜感激!
【问题讨论】:
标签: java android android-tabhost