在Activity中一起使用onBackPressed()和onSaveInstanceState()

时间:2014-01-26 22:43:27

标签: android android-fragments bundle state android-fragmentactivity

我将onBackPressed重写为

@Override
public void onBackPressed() {
    Intent setIntent = new Intent(this, MainActivity.class);
    setIntent.addCategory(Intent.CATEGORY_HOME);
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(setIntent);
}

我还保存了我的一个活动片段:

@Override
public void onSaveInstanceState(Bundle outState) {
    getSupportFragmentManager().putFragment(outState, "mContent", mContent);
    super.onSaveInstanceState(outState);
}

然而,这些方法似乎并不合作(状态永远不会保存,尽管在我超越onBackPressed()之前它运作良好。)

有没有办法解决它,除了使用SharedPreferences?如果可能的话,我想坚持onSaveInstanceState()onRestoreInstanceState()

1 个答案:

答案 0 :(得分:1)

似乎你必须致电

super.onBackPressed();

在onBackPressed()结束时。这样,当您按下后退按钮时,首先调用onBackPressed,然后按顺序调用onPause(),onStop(),onSaveInstanceState(),最后调用onDestroy()。

关于onBackPressed的问题。 为什么要更改后退按钮的行为? Android知道如何回到之前的活动!