如何在第一次加载后将数据传递给单个任务活动

时间:2013-09-27 16:29:27

标签: android android-intent

我有一个Activity这是一个单一的任务,所以我猜创造只被调用一次。我想从另一个活动传递一些参数。使用Intent,我正在添加额外内容但是当我在单个活动onResume中阅读它们时,数据不存在。

我需要一种方法将数据传递给单个任务活动或重新启动它。

修改

澄清。问题是我的活动使用单一任务作为清单中的启动模式。我认为这意味着oncreate只被调用一次,这就是为什么我试图获取onResume中的参数。

当我恢复单一任务活动时,我无法在之前的活动中添加任何参数,因为它没有启动它,只是简单地恢复它

3 个答案:

答案 0 :(得分:5)

onNewIntent()与单实例活动一起使用。在getIntent()中为单实例活动调用onResume()将返回最初启动Activity的Intent,而不是Activity刚收到的Intent。要确保getIntent()始终在单实例活动中返回最后收到的Intent,请使用setIntent()存储最后收到的Intent。

the reference documentation for onNewIntent()

中记录了这一点

答案 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