He mirado en los puestos de Desbordamiento de Pila y en tutoriales en otros sitios web, y no puedo entender cómo utilizar TabHost. Puede alguien por favor que me lo explique y tal vez me envía un enlace a un tutorial?

  • en realidad existe una relación entre tabHosts vs fragmentos?
  • TabHost NO es obsoleto. TabActivity es. Por favor, dejar de difundir falsos rumores.
InformationsquelleAutor Steven | 2012-07-24

2 Comentarios

  1. 71

    ¿Cómo puedo usar tabHost para Android

    ¿Cómo puedo usar tabHost para Android

    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 usar diseño «activity_main.xml» .

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

    • mTabHost.newTabSpec(«primero») es crear tabspec id «primera».

    • setIndicator(«Primero») es crear texto «Primera» en el título de la ficha.

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

    • mTabHost.pestaña add(….) es agregar spectab a la ficha principal

    • mTabHost.setCurrentTab(0) es defult ficha página de inicio.

    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 agregar nombre de la actividad «.FirstActivity» y «.SecondActivity» en el xml de ejemplo.

    ¿Cómo puedo usar tabHost para Android

    Acabado!!!!!

    ¿Cómo puedo usar tabHost para Android

    • Las fichas no aparecen… ¿por qué?
    • getTabHost() no funciona para mí. No importa como recurso.
    • usted debe tener su actividad Extender TabActivity
    • No deberíamos utilizar fragmento de cada una de las pestañas ?
    • Fragment‘s son siempre la mejor opción
    • Esta es obsoleto

  2. 5

    Primero de todo, mientras que el TabHost no es obsoleto, TabActivity en la otra mano está en desuso debido a Fragment de la API.

    Hay dos maneras de usar el TabHost; el uso de Fragmento a través de FragmentTabHost y el uso de TabHost.TabContentFactory.

    1. El uso de Fragmento a través de FragmentTabHost

    Este código de ejemplo que muestran cómo utilizar 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>

    Realidad mediante el uso de Fragmento, puede utilizar la Ficha en el interior de un Fragmento (Android de google docs).

    2. El 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 el uso de más reciente Diseño de Material de estilo TabLayout clase.

Dejar respuesta

Please enter your comment!
Please enter your name here