我正在使用Android的Tabhost,无法在Main Activity中查看我的A活动。它在setIndicatorsetContent(new Intent(this, a.class))
中抛出错误。需要做哪些更改?我需要在activity中更改一些代码吗?
MainActivity代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost tabHost = (TabHost)findViewById(R.id.tabhost);
tabHost.setup();
//tab 1
TabHost.TabSpec spec = tabHost.newTabSpec("Tab 1");
spec.setContent(new Intent(this,a.class));
spec.setIndicator("Exams");
tabHost.addTab(spec);
//tab 2
spec = tabHost.newTabSpec("Tab 2");
spec.setContent(new Intent(this,b.class));
spec.setIndicator("Pratice");
tabHost.addTab(spec);
}
}
错误日志
Process: com.example.vivek.helloworld, PID: 17776
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vivek.helloworld/com.example.vivek.helloworld.MainActivity}: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:722)
at android.widget.TabHost.setCurrentTab(TabHost.java:388)
at android.widget.TabHost.addTab(TabHost.java:222)
at com.example.vivek.helloworld.MainActivity.onCreate(MainActivity.java:22)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
发布于 2018-12-06 20:03:48
正如错误中所述:java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
您需要声明localactivitymanager以解决此错误。(当您在非法或不适当的时间调用该方法时,会发生仅供参考的IllegalStateException )
因此,您需要通知活动有关状态的信息,并为此实现以下代码:
tabHost.setup(this.getLocalActivityManager());
我还想提醒您注意,从API13开始,TabHost就被弃用了,取而代之的是片段和片段管理器。这是一个很好的实践,确保您不会实现过时的/不推荐使用的类。
这个类在API级别13中被弃用。
请使用新的Fragment和FragmentManager API;在较旧的平台上,也可以通过Android兼容包获得这些API。
https://stackoverflow.com/questions/53658488
复制相似问题