2010-06-04 21 views
46

El Desarrolladores de Android TabWidget tutorial dice lo siguiente:Ejemplo de uso de pestañas de Android con Vistas en lugar de Actividades?

"Se puede aplicar el contenido de su ficha en una de dos maneras: utilizar las pestañas para intercambiar puntos de vista dentro de la misma actividad, o utilice las pestañas para cambiar entre las actividades totalmente independientes. "

El tutorial continúa para demostrar cómo puede usar pestañas con actividades separadas. No he podido encontrar un ejemplo de uso de pestañas con diferentes Vistas dentro de la misma Actividad. Preferiría no volver a inventar esta rueda en particular, así que espero que alguien aquí sepa cómo se hace esto y pueda darme pistas. ¡Gracias!

+3

El problema con esto es que extiende TabActivity que está en desuso. –

Respuesta

40

Creo que en el método .setContent de cada pestaña se pasa en la vista que desea utilizar:

TabHost.TabSpec spec1 = tabs.newTabSpec("tag1"); 
spec1.setContent(R.id.AnalogClock01); 
spec1.setIndicator("Analog Clock"); 

He aquí un ejemplo que encontré hace un tiempo atrás:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 

    <TabHost android:id="@+id/TabHost01" android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    <TabWidget android:id="@android:id/tabs" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
    <FrameLayout android:id="@android:id/tabcontent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="65px"> 
     <AnalogClock android:id="@+id/AnalogClock01" android:layout_width="wrap_content" android:layout_height="wrap_content"></AnalogClock> 
     <DigitalClock android:text="DigitalClock01" android:id="@+id/DigitalClock01" android:layout_width="wrap_content" android:layout_height="wrap_content"></DigitalClock> 
    </FrameLayout> 
    </TabHost> 
</LinearLayout> 

Y el código de Java para este ejemplo es el siguiente:

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TabHost; 

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

     TabHost tabs = (TabHost)findViewById(R.id.TabHost01); 

     tabs.setup(); 

     TabHost.TabSpec spec1 = tabs.newTabSpec("tag1"); 

     spec1.setContent(R.id.AnalogClock01); 
     spec1.setIndicator("Analog Clock"); 

     tabs.addTab(spec1); 

     TabHost.TabSpec spec2 = tabs.newTabSpec("tag2"); 
     spec2.setContent(R.id.DigitalClock01); 
     spec2.setIndicator("Digital Clock"); 

     tabs.addTab(spec2); 
    } 
} 
+0

¿Qué sucede si tengo que hacer una "tarea" en cada vista? Por ejemplo, si tengo que analizar XML en View1 y mostrar datos después de consultar la base de datos SQLITE en View2? Escribir actividades separadas para cada pestaña es la única solución en este caso? –

Cuestiones relacionadas