У меня возникла проблема с неправильной загрузкой моего TabHost из-за ошибки. Вот мой код, XML и журналы ошибок:TabHost не загружается должным образом?
public class TabScreen extends TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_screen);
TabHost t = getTabHost();
TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost);
//For New Photos
TabSpec newSpec = tabHost.newTabSpec("NewPhoto");
newSpec.setIndicator("NewPhoto", getResources().getDrawable(R.drawable.ic_tab_newphoto));
Intent phNewIntent = new Intent(this, NewPhoto.class);
newSpec.setContent(phNewIntent);
//For List of Taken Photos
TabSpec listSpec = tabHost.newTabSpec("PhotoList");
listSpec.setIndicator("PhotoList", getResources().getDrawable(R.drawable.ic_tab_photolist));
Intent phListIntent = new Intent(this, PhotoList.class);
listSpec.setContent(phListIntent);
//For Map
TabSpec mapSpec = tabHost.newTabSpec("PhotoMap");
mapSpec.setIndicator("PhotoMap", getResources().getDrawable(R.drawable.ic_tab_photomap));
Intent phMapIntent = new Intent(this, PhotoMap.class);
mapSpec.setContent(phMapIntent);
tabHost.addTab(newSpec);
tabHost.addTab(listSpec);
tabHost.addTab(mapSpec);
}
}
И мой XML:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
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>
и, наконец, мои сообщения об ошибках: (Был длинный список, но главный один Я считаю, что проблема заключается в том, что я вставляю)
12-02 16:00:06.250: E/AndroidRuntime(3757): FATAL EXCEPTION: main
12-02 16:00:06.250: E/AndroidRuntime(3757): java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.wcu.snipsnaps/edu.wcu.snipsnaps.TabScreen}: java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.wcu.snipsnaps/edu.wcu.snipsnaps.NewPhoto}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
На этом сайте представлено несколько статей об этой проблеме лемм, но, посмотрев на каждого, ни одно из решений не работало. У моего xml есть правильный @android: id/tabhost, и я удалил свой файл R.java и многократно очищал весь проект. Если это помогает, когда я делал некоторую отладку, место, где приложение распалось, было на tabHost.addTab(newSpec);
. Кто-нибудь знает, что происходит?
EDIT: Полный журнал регистрации ошибок:
12-02 17:02:43.296: E/AndroidRuntime(8121): java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.wcu.snipsnaps/edu.wcu.snipsnaps.TabScreen}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.os.Handler.dispatchMessage(Handler.java:99)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.os.Looper.loop(Looper.java:130)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.ActivityThread.main(ActivityThread.java:3687)
12-02 17:02:43.296: E/AndroidRuntime(8121): at java.lang.reflect.Method.invokeNative(Native Method)
12-02 17:02:43.296: E/AndroidRuntime(8121): at java.lang.reflect.Method.invoke(Method.java:507)
12-02 17:02:43.296: E/AndroidRuntime(8121): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
12-02 17:02:43.296: E/AndroidRuntime(8121): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
12-02 17:02:43.296: E/AndroidRuntime(8121): at dalvik.system.NativeStart.main(Native Method)
12-02 17:02:43.296: E/AndroidRuntime(8121): Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.TabActivity.onContentChanged(TabActivity.java:105)
12-02 17:02:43.296: E/AndroidRuntime(8121): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.Activity.setContentView(Activity.java:1657)
12-02 17:02:43.296: E/AndroidRuntime(8121): at edu.wcu.snipsnaps.TabScreen.onCreate(TabScreen.java:16)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-02 17:02:43.296: E/AndroidRuntime(8121): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
12-02 17:02:43.296: E/AndroidRuntime(8121): ... 11 more
Не работает ... У меня все еще есть то же сообщение об ошибке:/ – user2751164
Может быть, вам нужно изменить все идентификаторы в представлениях от android: id = "@ android: id, чтобы как android: id =" @ + id /, @android зарезервирован для элементов андроида по умолчанию. –
Новая ссылка добавлена в ответ в конце для получения дополнительной помощи. [link] (http://www.androidhive.info/2011/08/android-tab-layout-tutorial/) –