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