2013-12-02 1 views
0

У меня возникла проблема с неправильной загрузкой моего 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 

ответ

1

Попробуйте это в коде

TabHost tabHost = (TabHost)findViewById(R.id.tabhost); 

Вместо:

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

В XML:

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

Вместо

<?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"> 

Также Может быть, вы должны изменить все идентификаторы в представлениях от андроида: ID = "@ андроид: идентификатор ...." нравится андроид: идентификатор = "@ + идентификатор /. ....», @android зарезервирована для элементов андроидов по умолчанию

Ссылка на помощь http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

+0

Не работает ... У меня все еще есть то же сообщение об ошибке:/ – user2751164

+0

Может быть, вам нужно изменить все идентификаторы в представлениях от android: id = "@ android: id, чтобы как android: id =" @ + id /, @android зарезервирован для элементов андроида по умолчанию. –

+0

Новая ссылка добавлена ​​в ответ в конце для получения дополнительной помощи. [link] (http://www.androidhive.info/2011/08/android-tab-layout-tutorial/) –

0

я понял это - -

Я не был должным образом расширяя TabActivity во всех моих классов, чтобы быть отображается на вкладке.

Спасибо за помощь!

 Смежные вопросы

  • Нет связанных вопросов^_^