Android ActionbarTutorial de pestañas de fragmentos anidados de Sherlock

Prepare su proyecto importando la  biblioteca ActionBarSherlock . Consulte el  tutorial Implementación de ActionBarSherlock en Android  .

Cree un nuevo proyecto en Eclipse  File  >  New  >  Android Application Project. Complete los detalles y nombre su proyecto  ABSNestedFragTab.

Nombre de la aplicación:  ABSNestedFragTab

Nombre del proyecto:  ABSNestedFragTab

Nombre del paquete:  com.androidbegin. absnestedfragtab

Abra su  MainActivity .java  y pegue el siguiente código.

Actividad principal .java

paquete com.androidbegin.absnestedfragtab;

importar com.actionbarsherlock.app.SherlockFragmentActivity;

importar android.support.v4.app.FragmentTabHost;
importar android.os.Bundle;

clase pública MainActivity extiende SherlockFragmentActivity {
	// Declarar Variables	
	FragmentoTabHost mTabHost;

	@Anular
	Vacío protegido onCreate (Paquete de estado de instancia guardado) {
		super.onCreate(estadoDeInstanciaGuardado);
		// Establecer la vista desde main_fragment.xml
		setContentView(R.layout.main_fragment);

		// Localice android.R.id.tabhost en main_fragment.xml
		mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);

		// Crea las pestañas en main_fragment.xml
		mTabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent);

		// Crear tabulador padre1
		mTabHost.addTab(mTabHost.newTabSpec("parent1").setIndicator("Parent1"),
				FragmentParentTab1.clase, nulo);

		// Crear tabulador padre2
		mTabHost.addTab(mTabHost.newTabSpec("parent2").setIndicator("Parent2"),
				FragmentParentTab2.class, nulo);

	}
}

En esta actividad, hemos creado dos pestañas principales con FragmentTabHost y cada pestaña abrirá un fragmento diferente.

A continuación, cree un diseño gráfico XML para MainActivity. Vaya a  res  >  diseño  > Haga clic con el botón derecho en el  diseño  >  Nuevo  >  Archivo XML de Android

Nombre su nuevo archivo XML  main_fragment.xml  y pegue el siguiente código.

fragmento_principal .xml

<LinearLayout xmlns_android="http://schemas.android.com/apk/res/android"
    android_layout_width="match_parent"
    android_layout_height="match_parent"
    android:orientación="vertical" >

    <android.support.v4.app.FragmentTabHost
        android_id="@android:id/tabhost"
        android_layout_width="match_parent"
        android_layout_height="match_parent" >

        <FrameLayout
            android_id="@+id/contenido de tabulación"
            android_layout_width="match_parent"
            android_layout_height="match_parent" />
    </android.support.v4.app.FragmentTabHost>

</LinearLayout>

A continuación, cree la pestaña principal del primer fragmento. Vaya a  Archivo  >  Nuevo  >  Clase  y asígnele el nombre  FragmentParentTab1 .java. Seleccione su paquete llamado  com. Androidbegin . absnestedfragtab  y haga clic en  Finalizar .

Abra su  FragmentParentTab1 .java  y pegue el siguiente código.

FragmentoParentTab1 .java

paquete com.androidbegin.absnestedfragtab;

importar com.actionbarsherlock.app.SherlockFragment;

importar android.os.Bundle;

importar android.view.LayoutInflater;
importar android.view.View;
importar android.view.ViewGroup;

clase pública FragmentParentTab1 extiende SherlockFragment {
	@Anular
	Public View onCreateView(LayoutInflater inflater, contenedor ViewGroup,
			Paquete guardadoInstanceState) {
		Ver rootView = inflater.inflate(R.layout.fragmentparenttab1,
				contenedor, falso);
		volver rootView;
	}

}

A continuación, cree la pestaña principal del segundo fragmento. Vaya a  Archivo  >  Nuevo  >  Clase  y asígnele el nombre  FragmentParentTab2 .java. Seleccione su paquete llamado  com. Androidbegin . absnestedfragtab  y haga clic en  Finalizar .

Abra su  FragmentParentTab2 .java  y pegue el siguiente código.

FragmentoParentTab2 .java

paquete com.androidbegin.absnestedfragtab;

importar com.actionbarsherlock.app.SherlockFragment;
importar android.os.Bundle;
importar android.support.v4.app.FragmentTabHost;
importar android.view.LayoutInflater;
importar android.view.View;
importar android.view.ViewGroup;

clase pública FragmentParentTab2 extiende SherlockFragment {
	FragmentoTabHost mTabHost;

	@Anular
	Public View onCreateView(LayoutInflater inflater, contenedor ViewGroup,
			Paquete guardadoInstanceState) {

		mTabHost = new FragmentTabHost(getSherlockActivity());

		mTabHost.setup(getSherlockActivity(), getChildFragmentManager(),
				R.layout.fragmentparenttab2);

		// Crear tabulador secundario1
		mTabHost.addTab(mTabHost.newTabSpec("child1").setIndicator("Child1"),
				FragmentChildTab1.class, nulo);

		// Crear Child Tab2
		mTabHost.addTab(mTabHost.newTabSpec("niño2").setIndicator("Niño2"),
				FragmentChildTab2.class, nulo);
		volver mTabHost;
	}

	@Anular
	vacío público onDestroyView () {
		super.onDestroyView();
		mTabHost = nulo;
	}
}

En este fragmento, hemos creado dos pestañas secundarias con FragmentTabHost y cada pestaña abrirá un fragmento diferente.

A continuación, cree un diseño gráfico XML para la pestaña principal del primer fragmento. Vaya a  res  >  diseño  > Haga clic con el botón derecho en el  diseño  >  Nuevo  >  Archivo XML de Android

Nombre su nuevo archivo XML  fragmentparenttab1.xml  y pegue el siguiente código.

fragmentoparenttab1 .xml

<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="match_parent"
    android_layout_height="match_parent" >

    <Vista de texto
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_centerHorizontal="verdadero"
        android_layout_centerVertical="verdadero"
        android_text="@cadena/FragmentParentTab1" />

</RelativeLayout>

A continuación, cree un diseño gráfico XML para la pestaña principal del segundo fragmento. Vaya a  res  >  diseño  > Haga clic con el botón derecho en el  diseño  >  Nuevo  >  Archivo XML de Android

Nombre su nuevo archivo XML  fragmentparenttab2.xml  y pegue el siguiente código.

fragmentoparenttab2 .xml

<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="match_parent"
    android_layout_height="match_parent" >

</RelativeLayout>

A continuación, cree la pestaña secundaria del primer fragmento. Vaya a  Archivo  >  Nuevo  >  Clase  y asígnele el nombre  FragmentChildTab1 .java. Seleccione su paquete llamado  com. Androidbegin . absnestedfragtab  y haga clic en  Finalizar .

Abra su  FragmentChildTab1 .java  y pegue el siguiente código.

FragmentChildTab1 .java

paquete com.androidbegin.absnestedfragtab;

importar com.actionbarsherlock.app.SherlockFragment;
importar android.os.Bundle;
importar android.view.LayoutInflater;
importar android.view.View;
importar android.view.ViewGroup;

clase pública FragmentChildTab1 extiende SherlockFragment {
	@Anular
	Public View onCreateView(LayoutInflater inflater, contenedor ViewGroup,
			Paquete guardadoInstanceState) {
		Ver rootView = inflater.inflate(R.layout.fragmentchildtab1, container, false);
		volver rootView;
	}

}

A continuación, cree la segunda pestaña secundaria del fragmento. Vaya a  Archivo  >  Nuevo  >  Clase  y asígnele el nombre  FragmentChildTab2 .java. Seleccione su paquete llamado  com. Androidbegin . absnestedfragtab  y haga clic en  Finalizar .

Abra su  FragmentChildTab2 .java  y pegue el siguiente código.

FragmentChildTab2 .java

paquete com.androidbegin.absnestedfragtab;

importar com.actionbarsherlock.app.SherlockFragment;
importar android.os.Bundle;
importar android.view.LayoutInflater;
importar android.view.View;
importar android.view.ViewGroup;

clase pública FragmentChildTab2 extiende SherlockFragment {
	@Anular
	Public View onCreateView(LayoutInflater inflater, contenedor ViewGroup,
			Paquete guardadoInstanceState) {
		Ver rootView = inflater.inflate(R.layout.fragmentchildtab2, container, false);
		volver rootView;
	}

}

A continuación, cree un diseño gráfico XML para la pestaña secundaria del primer fragmento. Vaya a  res  >  diseño  > Haga clic con el botón derecho en  diseño  >  Nuevo  >  Archivo XML de Android
Asigne un nombre a su nuevo archivo XML  fragmentchildtab1.xml  y pegue el siguiente código.

fragmentchildtab1 .xml

<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="match_parent"
    android_layout_height="match_parent" >

    <Vista de texto
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_centerHorizontal="verdadero"
        android_layout_centerVertical="verdadero"
        android_text="@cadena/FragmentChildTab1" />

</RelativeLayout>

A continuación, cree un diseño gráfico XML para la pestaña secundaria del segundo fragmento. Vaya a  res  >  diseño  > Haga clic con el botón derecho en  diseño  >  Nuevo  >  Archivo XML de Android
Asigne un nombre a su nuevo archivo XML  fragmentchildtab2.xml  y pegue el siguiente código.

fragmentchildtab2 .xml

<RelativeLayout xmlns_android="http://schemas.android.com/apk/res/android"
    xmlns_herramientas="http://esquemas.android.com/herramientas"
    android_layout_width="match_parent"
    android_layout_height="match_parent" >

    <Vista de texto
        android_layout_width="wrap_content"
        android_layout_height="wrap_content"
        android_layout_centerHorizontal="verdadero"
        android_layout_centerVertical="verdadero"
        android_text="@cadena/FragmentChildTab2" />

</RelativeLayout>

Cambie el nombre de la aplicación y fragmente los textos de la vista de texto en  strings.xml . Abra su  strings.xml  y pegue el siguiente código. Vaya a  res  >  valores  >  cadenas.xml

cadenas.xml

<recursos>

    <string name="app_name">Tutorial de pestañas de fragmentos anidados de ABS</string>
    <string name="hello_world">¡Hola mundo!</string>
    <string name="menu_settings">Configuración</string>
    <string name="title_activity_main">Tutorial de pestañas de fragmentos anidados de ABS</string>
    <string name="FragmentParentTab1">Esta es la pestaña principal de fragmento 1</string>
    <string name="FragmentChildTab1">Esta es la pestaña secundaria de fragmento 1</string>
    <string name="FragmentChildTab2">Esta es la pestaña secundaria de fragmento 2</string>

</recursos>

En su  AndroidManifest.xml , debemos cambiar el estilo del tema a » Theme.Sherlock » y establecer la versión SDK mínima de Android que prefiera. Abra su  AndroidManifest.xml  y pegue el siguiente código.

AndroidManifest.xml

<manifiesto xmlns_android="http://schemas.android.com/apk/res/android"
    paquete="com.androidbegin.absnestedfragtab"
    android_versionCode="1"
    android_versionName="1.0" >

    <usos-sdk
        android_minSdkVersion="7"
        android_targetSdkVersion="15" />

    <aplicación
        android_icono="@dibujable/ic_launcher"
        android_etiqueta="@cadena/nombre_aplicación"
        android_tema="@estilo/Tema.Sherlock" >
        <actividad
            android_nombre=".Actividad principal"
            android_label="@cadena/título_actividad_principal" >
            <intent-filter>
                <acción android_name="android.intent.action.MAIN" />

                <categoría android_name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </actividad>

    </aplicación>

</manifiesto>

Producción:

ABSNestedFragTab Capturas de pantalla