如何在按下后退箭头时恢复上一个活动的状态

时间:2016-03-25 13:32:40

标签: android android-fragments bundle

我有一个activity主页,其中包含fragment。我试图在用户回到家时恢复activity的状态。

这是Home Activity的方法,它将片段实例存储到Bundle

@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
    getSupportFragmentManager().putFragment(outState,"fragment",feedFragment);
}

我在onCreate

中有HomeActivity支票
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    context = this;
    initUi();
    initToolbar();
    initFragment(savedInstanceState);
}

private void initFragment(Bundle savedInstanceState) {

    if(savedInstanceState!=null){
        feedFragment = getSupportFragmentManager().getFragment(savedInstanceState,"fragment");

    }else{
        FragmentManager fm = getSupportFragmentManager();
        fm.beginTransaction().replace(R.id.content_container, feedFragment).commit();
    }
}

所以问题是当我在HomeActivity时改变屏幕的方向。它恢复它的状态。但是,当我在其他活动中,我从另一个活动的动作栏中的后退箭头回到家庭活动。然后它不会恢复它状态它再次开始从服务器加载数据。 我究竟做错了什么?当我从操作栏中的后退箭头导航回HomeActivity时,如何恢复prevoius状态

2 个答案:

答案 0 :(得分:1)

您使用onSaveInstanceStateonRestoreInstanceState方法。 阅读此answer,以便找到问题的解决方案。

答案 1 :(得分:1)

请在您的HomeActivity的activity元素内的manifest文件中输入android:launchMode =" singleTop"