3

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

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

编辑

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

当我恢复我的单个任务活动时,我无法将任何参数添加到先前活动的意图中,因为它不会启动它而只是恢复它

4

3 回答 3

6

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

这记录在onNewIntent() 的参考文档中

于 2013-09-27T17:34:43.213 回答
1

如果您尝试将数据传递给一个开始single task的活动并且该活动当前处于启动状态,那么您需要onNewIntent在新意图进入该活动时覆盖,这就是它的去处

于 2013-09-27T17:32:55.400 回答
1

you can start your second activity with startActivityForResult and pass the values that you want as the result from the second activity like this:

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(RESULT_OK,returnIntent);     
finish();

then in the previous activity onActivityResult will get called and you can get the returned values like this:

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
    }
  }
}
于 2013-09-27T18:22:49.943 回答