【问题标题】:Tabhost inside another tab host另一个选项卡主机内的选项卡主机
【发布时间】:2013-02-03 16:23:12
【问题描述】:

我的活动中有一个 tabhost。有 5 个选项卡,其中一个选项卡包含另一个 tabHost。我需要在 tabHost 下显示我的第二个 tabHost。

即,我的选项卡活动有 5 个选项卡。在我的第三个选项卡中包含另一个选项卡主机。

给我任何想法。这就是我初始化标签主机的方式。

TabHost mytab;
mytab = (TabHost)findViewById(android.R.id.tabhost);

logcat中显示的错误

02-19 10:46:29.207: E/AndroidRuntime(814): FATAL EXCEPTION: main

02-19 10:46:29.207:E/AndroidRuntime(814):java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.netmdapp1/com.example.netmdapp1.PatientSubTabActivity}:java.lang。 RuntimeException:无法启动活动 ComponentInfo{com.example.netmdapp1/com.example.netmdapp1.Appointment}:java.lang.NullPointerException 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.ActivityThread.startActivityNow(ActivityThread.java:1487) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 02-19 10:46:29.207: E/AndroidRuntime(814): at com.example.netmdapp1.PatientGroupActivity.startChildActivity(PatientGroupActivity.java:48) 02-19 10:46:29.207: E/AndroidRuntime(814): at com.example.netmdapp1.PatientsCustomView$3.onClick(PatientsCustomView.java:112) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.view.View.performClick(View.java:2485) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.view.View$PerformClick.run(View.java:9080) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.os.Handler.handleCallback(Handler.java:587) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.os.Handler.dispatchMessage(Handler.java:92) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.os.Looper.loop(Looper.java:123) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.ActivityThread.main(ActivityThread.java:3683) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 java.lang.reflect.Method.invokeNative(Native Method) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 java.lang.reflect.Method.invoke(Method.java:507) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 02-19 10:46:29.207: E/AndroidRuntime(814): at dalvik.system.NativeStart.main(Native Method) 02-19 10:46:29.207:E/AndroidRuntime(814):原因:java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.netmdapp1/com.example.netmdapp1.Appointment}:java.lang。空指针异常 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.ActivityThread.startActivityNow(ActivityThread.java:1487) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.widget.TabHost.setCurrentTab(TabHost.java:326) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.widget.TabHost.addTab(TabHost.java:216) 02-19 10:46:29.207: E/AndroidRuntime(814): at com.example.netmdapp1.PatientSubTabActivity.setupTab(PatientSubTabActivity.java:57) 02-19 10:46:29.207: E/AndroidRuntime(814): at com.example.netmdapp1.PatientSubTabActivity.onCreate(PatientSubTabActivity.java:30) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 02-19 10:46:29.207: E/AndroidRuntime(814): ... 16 更多 02-19 10:46:29.207: E/AndroidRuntime(814): 由: java.lang.NullPointerException 引起 02-19 10:46:29.207: E/AndroidRuntime(814): at com.example.netmdapp1.Appointment.onCreate(Appointment.java:88) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 02-19 10:46:29.207: E/AndroidRuntime(814): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 02-19 10:46:29.207: E/AndroidRuntime(814): ... 26 更多

【问题讨论】:

  • 如果您遇到崩溃,您应该将堆栈跟踪打印到 Logcat。此外,这不是您问题的答案,但可以考虑在 TabHost 中不使用 TabHost 的替代设计。
  • 您在使用操作栏标签吗?
  • 我们可以这样设计吗? tabhost里面的tabhost??有可能吗..
  • 我认为问题在于 tabhost 的公共 ID。 mytab = (TabHost)findViewById(android.R.id.tabhost);

标签: android android-tabhost android-style-tabhost


【解决方案1】:

tabHost.setCurrentTab(0); 属性决定默认选项卡。所以,如果你写 tabHost.setCurrentTab(n); 那么 nth 标签将是默认标签。

【讨论】:

  • 嗨,我真正需要的是什么,我的 ist tabActivity 包含 5 个选项卡。第三个选项卡包含另一个选项卡主机。 (即,主选项卡下的 tabhost)但是当我运行它时它总是崩溃