回答

1
@Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt("curChoice", mCurCheckPosition); 
    } 

,你以后可以使用这样的:

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
    if (savedInstanceState != null) { 
      // Restore last state for checked position. 
      mCurCheckPosition = savedInstanceState.getInt("curChoice", 0); 
     } 
} 
+1

对不起,我的意思是,如果系统可以恢复所有视图。但我认为你的解决方案可能是最接近的。 – 2013-03-01 23:12:12

1

也许我知道是什么问题。希望我的回答有助于某人想要解决这个问题。 如果有你的活性的片段,你的配置在AndroidManifest.xml该活动与

android:configChanges="keyboardHidden|orientation|screenSize" 

那么,要更改活动的布局时触发onConfigurationChanged。一旦活动膨胀一个新的布局或使用setContentView(R.layout.new_layout);,片段将消失,但是,该片段仍在运行,并从视图中消失。

所以问题是,片段连接到以前的布局,你需要做什么:

FragmentManager fm = getSupportFragmentManager(); 
FragmentTransaction transaction = fm.beginTransaction(); 
if (fm.findFragmentById(R.id.pane_list) == null) { 
    // instantiate fragment and add to view 
    mFragment = new ItemFragment(); 
    transaction.add(R.id.pane_list, mFragment); 
} else { 
    // fragment already exists, we re-attahced it 
    mFragment = fm.findFragmentById(R.id.pane_list); 
    transaction.detach(mFragment); 
    transaction.attach(mFragment); 
} 
transaction.commit(); 

从旧布局卸下并安装到新的布局,解决问题后。如果有任何错误:)

+1

android:configChanges不被Google工程师推荐。 – 2013-08-19 14:14:37