android: Ошибка при использовании макета табуляции

#android #android-tabhost

#Android #android-tabhost

Вопрос:

Я пытаюсь реализовать TabLayout в Activity, и я продолжаю получать ошибку из-за этого. Мой main_new.xml XML-файл находится :

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

<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" android:padding="5dp" />    

<LinearLayout android:id="@ id/tab1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="50dp">
     <TextView android:layout_width="fill_parent" 
        android:layout_height="100px" 
        android:text="This is tab1"
        android:id="@ id/txt1"/>    

</LinearLayout>

<LinearLayout android:id="@ id/tab2" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="50dp">
     <TextView android:layout_width="fill_parent" 
        android:layout_height="100px" 
        android:text="This is tab2"
        android:id="@ id/txt2"/>    

</LinearLayout>
</TabHost>
  

Мой класс Activity является :

 public class UltimateActivity extends Activity implements OnClickListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_new);
    TabHost tabHost = (TabHost)findViewById(R.id.tabHost);
    tabHost.setup();

    TabSpec spec1 = tabHost.newTabSpec("Tab 1");
    spec1.setContent(R.id.tab1); // Here iis where the errror points
    spec1.setIndicator("Tab 1");

    TabSpec spec2 = tabHost.newTabSpec("Info");
    spec2.setContent(R.id.tab2);
    spec2.setIndicator("Info");

    tabHost.addTab(spec1);
    tabHost.addTab(spec2);
}
  

}

Файл манифеста содержит :

         <activity android:icon="@drawable/icon" android:label="Ultimate" android:name="UltimateActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
  

ОШИБКА, которую я получаю :

  05-18 22:13:56.072: ERROR/AndroidRuntime(634): Uncaught handler: thread main exiting due to uncaught exception
 05-18 22:13:56.083: ERROR/AndroidRuntime(634): java.lang.RuntimeException: Unable to start activity ComponentInfo{orange.android.vpn/orange.android.vpn.UltimateActivity}: java.lang.RuntimeException: Could not create tab content because could not find view with id 2131296290
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.os.Handler.dispatchMessage(Handler.java:99)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.os.Looper.loop(Looper.java:123)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.app.ActivityThread.main(ActivityThread.java:4363)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at java.lang.reflect.Method.invokeNative(Native Method)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at java.lang.reflect.Method.invoke(Method.java:521)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at dalvik.system.NativeStart.main(Native Method)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634): Caused by: java.lang.RuntimeException: Could not create tab content because could not find view with id 2131296290
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.widget.TabHost$ViewIdContentStrategy.<init>(TabHost.java:587)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.widget.TabHost$ViewIdContentStrategy.<init>(TabHost.java:578)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.widget.TabHost$TabSpec.setContent(TabHost.java:435)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at orange.android.vpn.UltimateActivity.onCreate(UltimateActivity.java:20)
 05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-18 22:13:56.083: ERROR/AndroidRuntime(634):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
05-18 22:13:56.083: ERROR/AndroidRuntime(634):     ... 11 more
  

Я использую SDK 1.6, и в моем manist также есть android:minSdkVersion = «4». Я использовал http://www.codeproject.com/KB/android/AndroidTabs.aspx для руководства по вкладкам.

Кто-нибудь может помочь мне узнать об ошибке. Я потратил часы на эту ошибку. Любая помощь высоко ценится. Пожалуйста, попробуйте помочь в ближайшее время.

Спасибо

Ответ №1:

В вашем макете нет ни одного компонента с идентификатором tabhost .

Добавлен код для изменения здесь, попробуйте это

 TabHost tabHost = getTabHost();
  

в вашем коде вместо

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

Комментарии:

1. Идентификатор TabHost — android: id=»@ id / TabHost» . Компонент TabHost каким-то образом не работал должным образом в этом редакторе. Я изменил код и заменил <TabHost на (TabHost, чтобы показать код.

2. Моя активность расширяет «Активность», а не «TabActivity». Итак, у меня нет доступа к getTabHost ()

Ответ №2:

Моя ошибка 1 в XML-файле: я закрыл Framelayout вместо того, чтобы закрыть его после полной верстки. Это была моя ошибка. Я нашел это, и проблема решена.

Большое спасибо всем за просмотр. @yogsma, спасибо, что приложили усилия, чтобы помочь мне.

Спасибо

Комментарии:

1. Может ли высота вкладки, я имею в виду ту часть, где мы предоставляем изображение и текст как «Вкладка 1», быть меньшей высоты. Нравится только высота текста, или я могу установить его высоту.