tabhost tab studio metodos example español ejemplo control activity java android xml android-tabhost

java - studio - ¿Cómo uso tabHost para Android?



tabs android studio example (2)

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

Hay dos formas de usar TabHost; usando Fragment a través de FragmentTabHost y usando TabHost.TabContentFactory .

1. Uso de fragmentos a través de FragmentTabHost

Este código de ejemplo le muestra cómo usar TabHost en la 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, al usar Fragmento, puedes usar la pestaña dentro de un Fragmento ( documentos de Android ).

2. Usando 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, personalmente recomiendo usar la clase más nueva de TabLayout estilo de Material Design .

He visto publicaciones en Stack Overflow y tutoriales en otros sitios web, y no puedo entender cómo usar TabHost . ¿Puede alguien explicármelo y, por favor, enviarme un enlace a un tutorial?


  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 (); Se crea la pestaña principal.

  • mTabHost.newTabSpec ("first") es crear id de tabspec "first".

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

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

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

  • mTabHost.setCurrentTab (0) es una pestaña predeterminada 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 contenido de first_layout.xml

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

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

¡¡¡¡¡Terminar!!!!!