¿Cómo uso tabHost para Android

He mirado los postes en desbordamiento de la pila y en los tutoriales en otros Web site, y no puedo entender cómo utilizar TabHost . ¿Puede alguien por favor explicarme y quizás enviarme un enlace a un tutorial?

Concepto TabHost

Introduzca aquí la descripción de la imagen

  1. En ManiActivity se extiende TabActivity

     public class MainActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); TabHost mTabHost = getTabHost(); mTabHost.addTab(mTabHost.newTabSpec("first").setIndicator("First").setContent(new Intent(this ,FirstActivity.class ))); mTabHost.addTab(mTabHost.newTabSpec("second").setIndicator("Second").setContent(new Intent(this , SecondActivity.class ))); mTabHost.setCurrentTab(0); } } 
  • En esta actividad no utilice el diseño "activity_main.xml".

  • Tabhost mTabHost = getTabHost (); es crear ficha principal.

  • mTabHost.newTabSpec ("first") es create tabspec id "first".

  • setIndicator ("First") es crear el texto "First" en la pestaña de título.

  • setContent (new Intent (this, FirstActivity.class)) es el uso del contenido de FirstActivity.class (FirstActivity.java)

  • mTabHost.addTab (….) es añadir spectab a la pestaña principal

  • mTabHost.setCurrentTab (0) es la ficha defult cuando se inicia la página.

FirstActivity.java

 public class FirstActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( R.layout.first_layout ); } } 

SecondActivity.java

 public class SecondActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( R.layout.second_layout ); } } 
  • "R.layout.first_layout" es el contenido de first_layout.xml

  • "R.layout.second_layout" es el contenido de second_layout.xml

En AndroidManifest.xml agregue el nombre de la actividad ".FirstActivity" y ".SecondActivity" en el ejemplo xml.

Introduzca aquí la descripción de la imagen

¡¡¡¡¡Terminar!!!!!

Introduzca aquí la descripción de la imagen

En primer lugar, mientras que TabHost no está obsoleto, TabActivity por otro lado está obsoleto debido a Fragment API.

Hay dos maneras de usar TabHost; usando Fragment vía FragmentTabHost y usando TabHost.TabContentFactory .

1. Uso del fragmento vía FragmentTabHost

Este código de ejemplo muestra cómo utilizar TabHost en Actividad.

FragmentTabHostActivity.java

 public class FragmentTabHostActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_tab_host_activity); FragmentTabHost fragmentTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); fragmentTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent); fragmentTabHost.addTab(getTabSpec1(fragmentTabHost), Tab1Fragment.class, null); fragmentTabHost.addTab(getTabSpec2(fragmentTabHost), Tab2Fragment.class, null); } private TabHost.TabSpec getTabSpec1(FragmentTabHost tabHost) { return tabHost.newTabSpec("First Tab") .setIndicator("Tab1"); } private TabHost.TabSpec getTabSpec2(FragmentTabHost tabHost) { return tabHost.newTabSpec("Second Tab") .setIndicator("Tab 2"); } } 

fragment_tab_host_activity.xml

 <android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </android.support.v4.app.FragmentTabHost> 

En realidad, utilizando Fragmento, puede utilizar la pestaña dentro de un fragmento ( documentos Android ).

2. Uso de TabHost.ContentFactory

TabHostActivity.java

 public class TabHostActivity extends AppCompatActivity implements TabHost.TabContentFactory { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); tabHost.setup(); tabHost.addTab(getTabSpec1(tabHost)); tabHost.addTab(getTabSpec2(tabHost)); } private TabHost.TabSpec getTabSpec1(TabHost tabHost) { return tabHost.newTabSpec("First Tab") .setIndicator("Tab1") .setContent(this); } private TabHost.TabSpec getTabSpec2(TabHost tabHost) { return tabHost.newTabSpec("Second Tab") .setIndicator("Tab 2") .setContent(this); } @Override public View createTabContent(String tag) { return LayoutInflater.from(this).inflate(R.layout.activity_tab_1, null); } } 

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </TabHost> 

Sin embargo, yo personalmente recomiendo usar el estilo de diseño de material más nuevo TabLayout clase .

  • Color Estado Lista no reconocida en forma Drawable
  • Diseño responsable para todos los dispositivos Android
  • La vista personalizada no aparece
  • PreferenceScreen - <intention ... /> - Excepción - FLAG_ACTIVITY_NEW_TASK
  • Barra de herramientas empujando la barra de estado
  • Android Scrollview Desplazamiento automático hacia arriba
  • ¿Por qué estoy recibiendo HttpResponse diferente de un navegador en android?
  • Cómo agregar varios marcos en xml
  • Aplicación de Android que no se conecta a Wifi, pero funciona bien en 3G compartida a través de Wifi
  • PreferenceFragment superpone la barra de herramientas
  • Error android.permission.WRITE_SECURE_SETTINGS
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.