我的选项卡中有一个带有两个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);
    }
}

10-05 22:59
查看更多