我程序的很多用户报告同一错误的“强制关闭”,我无法重现错误,所以很难调试!
它似乎与TabHost有关(我的应用程序中有两个)
现在我试图扩展TabHost覆盖dispatchWindowFocusChanged()并测试getCurrentView()是否返回null ...如果是这样我将setCurrentTab()扩展到最后一个已知的选项卡索引。 但我不知道这是否会起作用......
有人对此报告有任何线索吗?
java.lang.NullPointerException
at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java:298)
at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java:302)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:662)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:662)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:662)
at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:662)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1946)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
这是TabHost布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/main_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/airport_linear"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
</TabHost>
</LinearLayout>
答案 0 :(得分:1)
如果使用findViewById()加载TabHost,则在添加选项卡之前调用setup()。 但是:您不需要在TabActivity中的getTabHost()之后调用setup()。 http://developer.android.com/reference/android/widget/TabHost.html#setup()
答案 1 :(得分:0)
尝试扩展TabActivity 就像
public class TabsExampleActivity extends TabActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main_tabhost_layout);
TabHost tabHost = getTabHost();
...
}
}
我希望这可以帮助
答案 2 :(得分:0)
今天在2.2
上运行一定要确实
mTabHost = (TabHost) findViewById(R.id.tabhost);
mTabHost.setup();
这解决了它。