Problemas con el ejemplo de Android TabHost

He estado intentando implementar el 'avanzado' tabwidget ejemplo de google. Pero, cuando intenta llamar tabHost.addTab(spec); Obtiene una traza de pila del depurador. Lo siento, no tengo el rastro de la pila aquí, pero me estoy preguntando si otros han tenido este mismo problema (como este código tenía un número de errores tipográficos y falta de información que me detuvo de incluso la compilación.

¿Puede alguien apuntarme a una versión corregida / en ejecución de este código?

La información actualizada necesaria son:

 <activity android:name=".ArtistsActivity"></activity> <activity android:name=".AlbumsActivity"></activity> <activity android:name=".SongsActivity"></activity> 

El ejemplo TabHost actual en el sitio de desarrolladores de Android contiene un error y también deja fuera un paso importante que evitará que se ejecute el ejemplo.

En primer lugar: En el método onCreate () que se agrega a la clase HelloTabWidget intenta utilizar un objeto TabHost denominado mTabHost. Esto no es válido, debe ser tabHost.

Segundo: El tutorial deja fuera los detalles que necesita para agregar cada una de las actividades también el AndroidManifest.xml. Sin esto, el código no funcionará y obtendrá "fuerza de cierre" cada vez que intente ejecutar.

Pasé la última hora o así pasando por ese tutorial. Aquí están los problemas y las soluciones para él que traté con:

Paso 2: Al crear sus actividades, si no las crea a través del manifiesto, deberá agregarlas al manifiesto manualmente.

Añada estas líneas a AndroidManifest.xml:

  <activity android:name=".AlbumsActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> </activity> <activity android:name=".ArtistsActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> </activity> <activity android:name=".SongsActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> </activity> 

Paso 3: Sólo se le indica que cree el archivo ic_tab_artists.xml. Tendrás que crear uno para ic_tab_songs.xml y ic_tab_albums.xml. Puede duplicar el ic_tab_artists.xml (o cambiar las especificaciones de la ficha HelloTabView.java para utilizar el archivo artists.xml de cada ficha).

Paso 4: La tercera a última línea bajo / res / layout / main tiene un error tipográfico (a; en lugar de un 🙂

  android:padding="5dp" /> </LinearLayout> </TabHost> 

Paso 6: Hay un error tipográfico que usa las llamadas mTabHost en lugar de tabHost. Cambialo.

Como ya se ha mencionado, la función getIntent () en la última línea no es apropiada. Acabo de llamar a la pestaña basándome en su id. p.ej:

 tabHost.setCurrentTabByTag("albums"); 

También el

android:theme="@android:style/Theme.NoTitleBar"

No funciona para mí, si lo reemplazo con

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

funciona bien.

El ejemplo, corregido por Ted, también funciona si las tres actividades no incluyen la línea:

 android:theme="@android:style/Theme.NoTitleBar" 

Esto es útil si desea una barra de título además de las etiquetas de pestaña.

  • Fragmentos lentos Android TabHost lento
  • Android TabHost.addTab -> Excepción de puntero nulo
  • Cómo implementar el menú de pestaña de Android sin tabhost obsoleto
  • ¿Cómo implementar TabHost efecto deslizante?
  • Pila trasera personalizada para cada fragmento en TabHost en Android
  • Insignia de número de dibujo como iPhone en Android
  • Definir Tabhost / TabWidget + contenido dentro del archivo xml sin ningún código - es posible?
  • IPhone-como barra de pestañas en Android?
  • Android TabWidget detectar clic en la pestaña actual
  • Barra de pestañas ocultar problema android
  • TabHost / TabWidget - Escala de la imagen de fondo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.