Pregunta

He estado tratando de poner en práctica el 'avanzado' TabWidget ejemplo de google. Pero, cuando se trata de llamar tabHost.addTab(spec); consigo un seguimiento de la pila desde el depurador. Lo sentimos, no tengo el seguimiento de pila aquí, pero me pregunto si otros han tenido este mismo problema (ya que este código tenía un número de error tipográfico y la información que me ha impedido incluso la compilación de desaparecidos.

Puede alguien me punto a una versión corregida / marcha de este código?

La información actualizada se necesita son:

<activity android:name=".ArtistsActivity"></activity>
<activity android:name=".AlbumsActivity"></activity>
<activity android:name=".SongsActivity"></activity>
¿Fue útil?

Solución

El TabHost Ejemplo en el sitio Android Desarrolladores contiene un error y también deja fuera un paso importante que evitará que el ejemplo de ejecución.

En primer lugar: En el método onCreate () que se añade a la clase HelloTabWidget los intentos de utilizar un objeto TabHost llamado mTabHost. Esto es válido, debe ser tabHost.

En segundo lugar: El tutorial deja de lado los detalles que usted necesita para agregar cada una de las actividades también la AndroidManifest.xml. Sin este código no funcionará y obtendrá "obligar a cerrar" cada vez que intente ejecutar.

Otros consejos

He pasado la última hora o así que ir a través de ese tutorial. Aquí están los problemas y las soluciones para que el que me crucé:

Paso 2:. Al crear sus actividades, si no se crea a través del manifiesto a continuación, tendrá que añadirlos al manifiesto de forma manual

Añadir estas líneas para 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 indique que debe crear el archivo ic_tab_artists.xml. Tendrá que crear uno para ic_tab_songs.xml y ic_tab_albums.xml también. Usted sólo puede duplicar el ic_tab_artists.xml (o cambiar las especificaciones de la ficha HelloTabView.java utilizar el archivo artists.xml para cada ficha).

Paso 4: El tercio a la última línea en / res / layout / principal tiene un error tipográfico (a; en lugar de una:)

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

Paso 6: Hay un error tipográfico que utiliza llamadas mTabHost en lugar de tabHost. Cambiarlo.

Como ya se ha citado la función getIntent () en la última línea no es apropiado. Acabo de llamar la pestaña sobre la base de su ID. por ejemplo:

tabHost.setCurrentTabByTag("albums");

También el

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

no funciona para mí, si puedo reemplazar con

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

funciona bien.

El ejemplo, en su versión corregida por Ted, también funciona si las tres actividades no incluyen la línea:

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

Esto es útil si se desea una barra de título, además de las etiquetas de las solapas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top