我的选项卡中有一个带有两个SherlockFragments的SherlockFragmentActivity。自然,我想使当前选定的选项卡在方向更改时保持活动状态,并且当用户从活动中返回时,他们是从任一片段中启动的。
因此,我使用onSaveInstanceState存储选定的选项卡索引,然后在onCreate上重新选择它。这在方向更改时效果很好。但是,如果我启动另一个活动(比如说一个首选项屏幕)并从中返回,那么即使调用了onSaveInstanceState,保存的实例状态在onCreate上也始终为null。
因此,我想问题是我只是走错了路。如果我使用片段,是否必须将所有子屏幕都仅使用一项活动作为片段?
还是有其他原因导致我的已保存实例状态在活动更改之间消失?
编辑:活动B中的代码
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
最佳答案
将您的onOptionsItemSelected
代码更改为以下内容。 finish()
结束一个Activity
而不是重新启动它下面的一个。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}