屏幕旋转时的标签页更改[Android]

| 嗨,我有带有4个标签的Android APP(例如,tab1,tab2,tab3,tab4)。活动开始时,默认选项卡为tab1。我切换到任何其他标签(标签2、3或4)并更改屏幕方向,它始终重置为默认标签(标签1)。 我尝试使用以下代码:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);
    createView();
}
在createView()内部,我有:
private void createView()
{
... // Tabs are created before
tabHost.getTabWidget().setCurrentTab(CurrentTab);
}
CurentTab
是private int,默认设置为0,但在TabChange上设置:
public void onTabChanged(String tabId) {
    ... some code
    CurrentTab = tabHost.getCurrentTab();
}
我被堆放在这里...还有其他解决方法吗? 很快:我希望该选项卡在屏幕旋转时不会更改为默认值...     
已邀请:
问题是,在诸如屏幕旋转的配置更改上,当前活动被破坏并重新创建。对于选项卡活动,这包括选项卡活动本身以及每个选项卡的活动。 因此,当重新创建它时,它仅显示第一个选项卡,因为它没有其他信息。 要解决此问题,您可以覆盖选项卡活动中的
onRetainNonConfigurationInstance()
,并返回当前选定的选项卡。然后在选项卡活动的onCreate上调用ѭ5,它返回在onRetainNonConfigurationInstance()中返回的对象。如果对象为null,则知道方向没有变化,因此只需选择第一个选项卡;如果不为null,则屏幕旋转,您可以使用返回的值来确定之前和之后选择了哪个选项卡。再次设置。     
因此您必须通过在活动中覆盖onSaveInstanceState(Bundle)来实现此目的 重新创建屏幕旋转活动时,提示 编辑:
protected void onSaveInstanceState (Bundle outState){
    outState.putInt(\"LastTab\", tabHost.getCurrentTab());
}


protected void onCreate (Bundle savedInstanceState){
  super.onCreate (savedInstanceState);
  //...tabs creation
  // u need to provide some code to check if \"LastTab\" exists in savedState
  tabHost.getTabWidget().setCurrentTab(savedInstanceState.getInt(\"LastTab\"));
}
    
为了扩展Flo的答案-从Honeycomb 3.2(API 13)开始不推荐使用活动方法method4ѭ:   API级别13中不推荐使用此方法。   改用新的
Fragment
API
setRetainInstance(boolean)
;在旧版平台上,也可以通过Android兼容性软件包获得此功能。 恕我直言,使使用起来更容易一些。     

要回复问题请先登录注册