Как сохранить состояние вкладки во время ориентации в Android

У меня есть 2 вкладки, например, Tab1 & Tab2, которая отображается на экране. Пусть вкладки будут отображаться в ориентации ПОРТРЕТ.

Tab1 отображает Activity1 и Tab2 отображает Activity2.

В настоящее время выбранное состояние вкладки - Tab2. Теперь я меняю ориентацию ПОРТРЕТА на ЛАНДШАФТ. При изменении ориентации в режим LANDSCAPE вместо отображения Tab2 отображается текущий Tab1.

Мой код:

открытый класс TabBarExample расширяет TabActivity {

TabHost tabHost;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab);

    /* TabHost will have Tabs */
    tabHost= (TabHost)findViewById(android.R.id.tabhost);

    TabSpec firstTabSpec = tabHost.newTabSpec("tid1");
    TabSpec secondTabSpec = tabHost.newTabSpec("tid1");


    firstTabSpec.setIndicator("First Tab Name").setContent(new Intent(this,FirstTab.class));
    secondTabSpec.setIndicator("Second Tab Name").setContent(new Intent(this,SecondTab.class));


    tabHost.addTab(firstTabSpec);
    tabHost.addTab(secondTabSpec);



    tabHost.getTabWidget().getChildAt(0).getLayoutParams().height =40;
    tabHost.getTabWidget().getChildAt(1).getLayoutParams().height =40;

    for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)  
    {  
        tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#8A4117"));  
    }  

    Integer lastTab = (Integer) getLastNonConfigurationInstance();
    if(lastTab != null) {
       tabHost.setCurrentTab(lastTab);
    } 
    tabHost.getTabWidget().getChildAt(1).setBackgroundColor(Color.parseColor("#C35817"));  
} 
public void onTabChanged(String tabId) {  
    // TODO Auto-generated method stub  
    for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)  
    {  
        tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#8A4117"));  
    }  

    tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#C35817"));  


}
public Object onRetainNonConfigurationInstance() {
    return tabHost.getCurrentTab();
}

}

1 ответ

Решение

Проверьте этот ответ

Вы должны играть с SaveInstaceState а также RestoreInstanceState

Смотрите этот пример

Чтобы узнать больше Читать это

Другие вопросы по тегам