我正在从父项活动开始儿童活动。我希望子活动在某些情况下将结果传回父活动。
要开始儿童活动,我打电话给...
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);
}
我在这里做错了什么?
答案 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();
这可以在父活动中访问。