我有一个Activity
这是一个单一的任务,所以我猜创造只被调用一次。我想从另一个活动传递一些参数。使用Intent,我正在添加额外内容但是当我在单个活动onResume
中阅读它们时,数据不存在。
我需要一种方法将数据传递给单个任务活动或重新启动它。
修改
澄清。问题是我的活动使用单一任务作为清单中的启动模式。我认为这意味着oncreate只被调用一次,这就是为什么我试图获取onResume中的参数。
当我恢复单一任务活动时,我无法在之前的活动中添加任何参数,因为它没有启动它,只是简单地恢复它
答案 0 :(得分:5)
将onNewIntent()
与单实例活动一起使用。在getIntent()
中为单实例活动调用onResume()
将返回最初启动Activity的Intent,而不是Activity刚收到的Intent。要确保getIntent()
始终在单实例活动中返回最后收到的Intent,请使用setIntent()
存储最后收到的Intent。
答案 1 :(得分:1)
您可以使用startActivityForResult
开始第二项活动,并将第二项活动所需的值作为结果传递给您:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);
finish();
然后在之前的活动中onActivityResult
将被调用,你可以得到这样的返回值:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
答案 2 :(得分:0)
如果您尝试将数据传递给以single task
启动且活动当前处于活动状态的活动,那么当新意图进入该活动时,您需要覆盖onNewIntent
去