#android #android-layout
#Android #android-макет
Вопрос:
Многие пользователи моей программы сообщают о «принудительном закрытии» с той же ошибкой, и я не могу воспроизвести ошибку, поэтому ее трудно отлаживать!
Кажется, это связано с TabHost (у меня их два в моем приложении)
На данный момент я попытался расширить TabHost, переопределив dispatchWindowFocusChanged() и проверив, возвращает ли getCurrentView () значение null… если это так, я устанавливаю CURRENTTAB () в последний известный индекс вкладки. Но я не знаю, поможет ли это…
Кто-нибудь имеет какое-либо представление об этом отчете?
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>
Комментарии:
1. не могли бы вы опубликовать файл Java с исходным кодом
2. ошибка nullpointer, поэтому вам нужно проверить свой код tabhost, где вы пытаетесь получить доступ к объекту переменной r, который не инициализирован. Спасибо.
Ответ №1:
Вызовите setup() перед добавлением вкладок, если загружаете TabHost с помощью findViewById(). Однако: вам не нужно вызывать setup() после getTabHost() в TabActivity.
http://developer.android.com/reference/android/widget/TabHost.html#setup ()
Ответ №2:
попробуйте расширить TabActivity так же, как
public class TabsExampleActivity extends TabActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main_tabhost_layout);
TabHost tabHost = getTabHost();
...
}
}
Я надеюсь, что это могло бы помочь
Ответ №3:
Столкнулся с этим сегодня на 2.2
убедитесь, что вы делаете
mTabHost = (TabHost) findViewById(R.id.tabhost);
mTabHost.setup();
это исправлено.