我试图故意保存一些数据,所以当用户访问另一个屏幕或按下后退按钮然后再返回时,数据将保持不变。本质上是存储屏幕状态。
因此,如果您离开活动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();
答案 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();
}