在活动结束后从意图附加中获取数据

时间:2017-09-29 14:00:23

标签: android android-intent

我有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。但不确定这是正确的做事方式。有什么提示吗?

1 个答案:

答案 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);
}