我有3项活动。他们互相推出。
活动A> B> C.
每个人都使用intent.put extra将数据传递给下一个活动。
问题是 - 当我从活动B导航到活动C并点击返回时 - 我转到活动B但无法恢复最初来自活动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。但不确定这是正确的做事方式。有什么提示吗?
答案 0 :(得分:0)
在寻找解决方案一段时间后,我想出了这个:
首先,有"返回"和" up"。我的意思是" Up"在我的问题。向上导航与左下角或物理后退按钮不同。它默认重新创建up活动,除非我将启动模式设置为" singleTop"对于清单中的活动。
或者我需要在我的活动C中编写代码来制作" Up"按钮就像"返回"
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}