如何从onResume()中的bundle中拉出字符串?

时间:2011-10-17 19:55:12

标签: android

我有一个用户选择联系人后恢复的活动。现在,在用户选择一个联系人onSavedInstanceState之前,我会在Bundle中输入一个字符串。现在,在用户选择联系人并返回结果之后。 onRestoreInstanceState没有被调用。只调用onResume()。那么,一旦活动恢复,我将如何将我的字符串拉回包中?

2 个答案:

答案 0 :(得分:6)

假设您有两个活动A和B,活动A启动活动B.如果您想将信息从A传递到B,您可以将信息从A传递到B:

Intent i = new Intent(this. ActivityB.class);
i.putExtra("Key","Value");
startActivity(i);

然后在活动B中,您可以使用

获取字符串
String value = this.getIntent().getExtras().getString("keyName");

但是,如果要将信息从B传递到A,则必须使用其他方法。您需要使用startActivity,而不是startActivityForResult。可在此处找到此方法的说明:How to return a result (startActivityForResult) from a TabHost Activity?

答案 1 :(得分:3)

首先,为什么onRestoreInstanceState没有触发:根据documentation,onRestoreInstanceState在 onStart()之后被称为,根据activity lifecycle diagram,只会被调用在onCreate或onRestart之后。如果在用户选择联系人时未破坏主活动,则onStart将永远不会触发,onRestoreInstanceState将永远不会触发。该图显示了当“另一个活动进入活动前”并且onPause被触发时的情况 - 如果系统需要更多内存,那么只会杀死您的Activity。

其次,如何在选择联系人之前获取您保存的数据应该这样做,因为活动停留在内存中。如果你的活动留在内存中,那么onRestoreInstanceState应该会被激活。