Android — создание вложенных вкладок с помощью TabHost

#android #android-tabhost

#Android #android-tabhost

Вопрос:

можно ли создавать вложенные вкладки во вкладках, созданных TabHost? Если да, то как? Я не смог найти никакого ценного источника или помощи в этом деле.

Спасибо

Ответ №1:

Можно поместить a TabActivity внутри a Tab .

Допустим , у вас есть MainTabActivity с двумя Tabs . Tab Затем первый может удержаться FirstSubTabActivity , а второй Tab может удержаться SecondSubTabActivity .

Вот один из примеров:

Основная деятельность:

 public class MainTabActivity extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost tabHost = getTabHost();
        TabHost.TabSpec spec;
        Intent intent;

        intent = new Intent().setClass( this, FirstSubTabActivity.class );
        spec = tabHost.newTabSpec( "FirstTab" ).setIndicator( "One" ).setContent( intent );
        tabHost.addTab( spec );

        intent = new Intent().setClass( this, SecondSubTabActivity.class );
        spec = tabHost.newTabSpec( "SecondTab" ).setIndicator( "Two" ).setContent( intent );
        tabHost.addTab( spec );
    }
}
 

Первая подактивность:

 public class FirstSubTabActivity extends TabActivity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       TabHost tabHost = getTabHost();
       TabHost.TabSpec spec;
       Intent intent;

       intent = new Intent().setClass( this, SomeActivity.class );
       spec = tabHost.newTabSpec( "SubTab" ).setIndicator( "One" ).setContent( intent );
       tabHost.addTab( spec );

       intent = new Intent().setClass( this, SomeOtherActivity.class );
       spec = tabHost.newTabSpec( "AnotherSubTab" ).setIndicator( "Two" ).setContent( intent );
       tabHost.addTab( spec );
   }
}
 

Вторая подактивность:

 public class SecondSubTabActivity extends TabActivity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       TabHost tabHost = getTabHost();
       TabHost.TabSpec spec;
       Intent intent;

       intent = new Intent().setClass( this, SomeThirdActivity.class );
       spec = tabHost.newTabSpec( "ThirdSubTab" ).setIndicator( "One" ).setContent( intent );
       tabHost.addTab( spec );

       intent = new Intent().setClass( this, SomeFourthActivity.class );
       spec = tabHost.newTabSpec( "FourthSubTab" ).setIndicator( "Two" ).setContent( intent );
       tabHost.addTab( spec );
   }
}
 

Комментарии:

1. Большое спасибо, здесь показано ручное добавление вложенных вкладок, есть ли у вас какие-либо идеи, как сделать это программно, не используя еще 2 действия?