Android ActionbarTutorial de pestañas de fragmentos anidados de Sherlock

Android ActionbarTutorial de pestañas de fragmentos anidados de Sherlock

En este tutorial, aprenderá cómo implementar ActionbarSherlock Nested Fragment Tabs en su aplicación de Android. Fragmento anidado le permite incrustar fragmentos dentro de fragmentos. Lo que significa que puede colocar componentes de interfaz de usuario dinámicos y reutilizables en un componente de interfaz de usuario que en sí mismo es dinámico y reutilizable. Crearemos pestañas principales con fragmentos y dentro del fragmento principal habrá pestañas secundarias con fragmentos usando ActionbarSherlock Library. Vamos a empezar…

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

Código fuente 

[purchase_link id=”7999″ text=”Comprar para descargar el código fuente” style=”button” color=”green”]