将结果从一个活动传递到另一个活

时间:2014-03-12 03:30:06

标签: android

我正在从父项活动开始儿童活动。我希望子活动在某些情况下将结果传回父活动。

要开始儿童活动,我打电话给...

Intent i = new Intent(this,SpeechActivity.class);
startActivityForResult(i, SPEECH_REQUEST);

然后在子活动中,我将结果添加到意图中。我想也许我会把结果添加到错误的意图中。?

setResult(MainActivity.RESULT_SPEECH_TIMER);
Intent i = getIntent();
i.putExtra("minutes", time[0]);
i.putExtra("seconds", time[1]);
this.setIntent(i);
finish();

然后在父活动onActivityResult方法中我尝试访问bundle,但我总是得到空指针。

else if(resultCode==RESULT_SPEECH_TIMER)
{
    Bundle extras=data.getExtras();
    int initMinutes=extras.getInt("minutes");
    int initSeconds=extras.getInt("seconds");
    setTimer(initMinutes,initSeconds);
}

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

尝试将结果设置如下....

Intent i = new Intent();
i.putExtra("minutes", time[0]);
i.putExtra("seconds", time[1]);
setResult(MainActivity.RESULT_SPEECH_TIMER, i);
finish();

答案 1 :(得分:0)

是的,正如您认为您正在将结果添加到错误的意图中。因为 getIntent()

返回启动此活动的意图。因此,您将父活动用于子活动。但是在子活动中,您使用putExtra()添加值并尝试从父活动访问它。你现在无法在那里访问它。相反,您可以在子活动中创建新意图并向其添加数据。

Intent i = Intent(ChildActivity.this,ParentActivity.class);
i.putExtra("minutes", time[0]);
i.putExtra("seconds", time[1]);
this.setIntent(i);
finish();

这可以在父活动中访问。