我有3个活动。他们正在互相推出。
活动A> B>C。
每个人都使用意图传递数据。
问题是 - 当我从活动B到活动C并单击返回时 - 我转到活动B,但无法恢复最初来自Activity A的目的。
// activity A starting activity B
Intent intent = new Intent(MainActivity.this, ChaptersActivity.class);
intent.putExtra(CHAPTER_NAME, R.string.chapter_1_title);
startActivity(intent);
// Activity B saving data from intent extra in bundle and starting activity
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(MainActivity.CHAPTER_NAME, getIntent().getExtras().getInt(MainActivity.CHAPTER_NAME));
}
Intent intent = new Intent(this, ChapterDetails.class);
startActivity(intent);
// after going back from activity C to activity B by pressing back button - method onCreate is called, but Bundle onSaveInstanceState is null. As well as getIntent() is null.
作为一种解决方法,我正在考虑从活动B到C或使用持久存储时的StartActivityForresult。但不确定这是做事的正确方法。有任何提示?
在寻找解决方案一段时间后,我提出了这一点:
首先,有"背面"one_answers"向上"。我的意思是在我的问题上"提升"。向上导航与左下角或物理背部按钮不同。默认情况下,它将重新创建UP活动,除非我将启动模式设置为" Singletop"以作为清单中的UP活动。
或我需要在活动C中编写代码以组成" UP"按钮的作用,例如" Back"
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}