Android Extras在onBackPressed()上迷路了

时间:2019-04-02 12:51:03

标签: android android-fragmentactivity

我试图故意保存一些数据,所以当用户访问另一个屏幕或按下后退按钮然后再返回时,数据将保持不变。本质上是存储屏幕状态。

因此,如果您离开活动2 ,则您处于片段1 ,导航至活动2 (重要数据在此处)。按下时或通过其他方式返回时数据仍然存在。

这是我从片段1开始活动2的地方

intent = new Intent(getActivity(), DeliveryPageActivity.class);
...
startActivityForResult(intent, 

我正在这里尝试解决问题

@Override
public void onBackPressed() {

    //saving here (working okay)
    storeIntent.putExtra("currentDelivery", pageIndicatorView.getCurrentPage());
    setResult(RESULT_OK, storeIntent);
    super.onBackPressed();
}

@Override
protected void onResume() {
    super.onResume();

    //restoring here (NOT WORKING, intent has no extras)
    if (storeIntent.hasExtra("currentDelivery")) {
        currentDelivery = storeIntent.getIntExtra("currentDelivery", currentDelivery);
        pageIndicatorView.setCurrentPage(currentDelivery, true);
    }
}

并在onCreate()

中开始意图
    storeIntent = new Intent();

3 个答案:

答案 0 :(得分:1)

在活动2中尝试覆盖onPause而不是onBackPressed。请参见docs for activity lifecycle

编辑: 对不起,刚刚测试。在您的情况下,我将使用SharedPreferences还原 并覆盖OnPause(在按下后退按钮时被调用)和onResume,如下所示:

@Override
protected void onPause() {
    super.onPause();
    SharedPreferences sp = this.getSharedPreferences("myPrefsName", MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putInt("currentDelivery",pageIndicatorView.getCurrentPage());
    editor.apply();
}

@Override
protected void onResume() {
    super.onResume();
    SharedPreferences sp = this.getSharedPreferences("myPrefsName", MODE_PRIVATE);
    testState = sp.getInt("currentDelivery", 0);
}

答案 1 :(得分:0)

如果您不想接收任何数据,则使用startActivityForResult()方法没有任何意义。您可以只使用startActivity()方法来打开活动。

答案 2 :(得分:0)

致电finish();而不是super.onBackPressed()

@Override
public void onBackPressed() {
    //saving here (working okay)
    storeIntent.putExtra("currentDelivery", pageIndicatorView.getCurrentPage());
    setResult(RESULT_OK, storeIntent);
    finish();
}