Принудительно закрыть сообщение во вкладке приложения

1

Я делаю приложение табуляции, используя этот учебник. Когда я запускаю приложение на устройстве, он дает мне сообщение Force close. Вот мой основной код активности и мой логарифм ниже. Я понятия не имею, где я ошибаюсь. вот код

public class TabLayoutActivity extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    //Artist Tab
    intent = new Intent(this, Artists.class);
    spec = tabHost.newTabSpec("artists").setIndicator("Artist", res.getDrawable(R.drawable.tab_icon)).setContent(intent);
    tabHost.addTab(spec);

  //Songs
    intent = new Intent(this, Songs.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs", res.getDrawable(R.drawable.tab_icon)).setContent(intent);
    tabHost.addTab(spec);

  //Albums
    intent = new Intent(this, Album.class);
    spec = tabHost.newTabSpec("artists").setIndicator("Artist", res.getDrawable(R.drawable.tab_icon)).setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(1);
}
}

вот мой логарифм

05-28 19:16:51.421: D/dalvikvm(15189): GC_EXTERNAL_ALLOC freed 43K, 50% free 2725K/5379K, external 0K/0K, paused 33ms
05-28 19:16:51.441: D/AndroidRuntime(15189): Shutting down VM
05-28 19:16:51.441: W/dalvikvm(15189): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
05-28 19:16:51.451: E/AndroidRuntime(15189): FATAL EXCEPTION: main
05-28 19:16:51.451: E/AndroidRuntime(15189): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zafar.tablayout/com.zafar.tablayout.TabLayoutActivity}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.os.Looper.loop(Looper.java:130)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.ActivityThread.main(ActivityThread.java:3691)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at java.lang.reflect.Method.invokeNative(Native Method)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at java.lang.reflect.Method.invoke(Method.java:507)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at dalvik.system.NativeStart.main(Native Method)
05-28 19:16:51.451: E/AndroidRuntime(15189): Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.TabActivity.onContentChanged(TabActivity.java:105)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:218)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.Activity.setContentView(Activity.java:1663)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at com.zafar.tablayout.TabLayoutActivity.onCreate(TabLayoutActivity.java:14)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-28 19:16:51.451: E/AndroidRuntime(15189):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
05-28 19:16:51.451: E/AndroidRuntime(15189):    ... 11 more
05-28 19:16:57.256: I/Process(15189): Sending signal. PID: 15189 SIG: 9

Обновить

Вот мой tabhost в main.xml

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabHost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

Второе обновление

Logcat после изменения tabHost в tabhost

05-28 19:47:56.271: I/Process(16575): Sending signal. PID: 16575 SIG: 9
05-28 19:47:58.381: D/dalvikvm(16782): GC_EXTERNAL_ALLOC freed 46K, 50% free 2725K/5379K, external 0K/0K, paused 20ms
05-28 19:47:58.411: D/AndroidRuntime(16782): Shutting down VM
05-28 19:47:58.411: W/dalvikvm(16782): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
05-28 19:47:58.411: E/AndroidRuntime(16782): FATAL EXCEPTION: main
05-28 19:47:58.411: E/AndroidRuntime(16782): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.zafar.tablayout/com.zafar.tablayout.TabLayoutActivity}: java.lang.RuntimeException: Your TabHost must have a TabWidget whose id attribute is 'android.R.id.tabs'
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.os.Looper.loop(Looper.java:130)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.ActivityThread.main(ActivityThread.java:3691)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at java.lang.reflect.Method.invokeNative(Native Method)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at java.lang.reflect.Method.invoke(Method.java:507)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at dalvik.system.NativeStart.main(Native Method)
05-28 19:47:58.411: E/AndroidRuntime(16782): Caused by: java.lang.RuntimeException: Your TabHost must have a TabWidget whose id attribute is 'android.R.id.tabs'
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.widget.TabHost.setup(TabHost.java:114)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.widget.TabHost.setup(TabHost.java:163)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.TabActivity.onContentChanged(TabActivity.java:109)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:218)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.Activity.setContentView(Activity.java:1663)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at com.zafar.tablayout.TabLayoutActivity.onCreate(TabLayoutActivity.java:14)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-28 19:47:58.411: E/AndroidRuntime(16782):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
05-28 19:47:58.411: E/AndroidRuntime(16782):    ... 11 more
Теги:

5 ответов

1
Лучший ответ

В вашем main.xml, что такое идентификатор TabHost?

Это должен быть android:id="@android:id/tabhost".

редактировать

Ваш TabWidget должен быть определен как:

<TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

На самом деле довольно легко увидеть из logcat: "В вашем TabHost должен быть TabWidget, чей атрибут id" android.R.id.tabs ".

Было бы проще, если бы вы разместили весь файл макета xml, чтобы мы могли видеть все возможные ошибки.

0

Некоторые основные вещи вам нужно следовать..

1. Нужно давать разрешение в файле манифеста. 2.Высокая высота макета времени и ширина слишком велики, если сравнить u с текущим эмулятором или экраном

0

Решение

Проблема была в файле main.xml. Я должен был использовать @android:id/idname всюду в main.xml. Но я использовал @+id/idname что неправильно. Он работает сейчас.

0

вы должны импортировать свой пакет name.R; как

import package.R;

и также insted таким образом, я предпочел бы использовать это, чтобы получить вкладку. что-то вроде. '

TabHost th = (TabHost) findViewbyid (R.id.tabhost);

и продолжать его плохое лечение

0

Вы добавили правильный id в tabhost в main.xml?

<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, просто замените строку

android:id="@+id/tabHost"

с

android:id="@android:id/tabhost"
  • 0
    Я разместил часть основного XML, пожалуйста, смотрите мое обновление
  • 0
    Я сделал тогда, я получил эту ошибку error: Error: No resource found that matches the given name (at 'id' with value '@android:id/tabHost').
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню