我是我的应用,我使用TabHost。和ActivityGroup来加载选项卡下的活动。在我的第二个选项卡上,我打开了activityGroup "TabGroupActivity"...从这里我打开一个子活动"childActivity2“。在"childActivity2“中,我想打开一个有主题对话框的普通活动。当我从正常的活动中返回时,我想在我的childActivity2中运行onActivityResult()。但是ChildActivity2中的onActivityResult()不起作用。
在childActivity2中启动正常活动的代码是
data.putInt("doctorId", doctor_id);
Intent createSchedule = new Intent(ScheduleWeekly.this, CreateSchedule.class).putExtras(data);
startActivityForResult(createSchedule, 1);这是我的onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==Activity.RESULT_OK)
{ Log.e("get","result");
.................
......
}
}发布于 2013-06-13 01:46:00
你的问题和我的一样。问题是,onActivityResult函数不会直接从活动组中的子活动触发,即使您的意图来自该子活动。
解决方案分为三个步骤。
首先,您必须让您的父activity,即您的ActiviyGroup类在您需要跳出当前activity的位置调用startActivityForResult函数。在您的儿童活动中,当您需要午餐时,请调用:
startActivityForResult(intent, 0);你应该打电话给:
getParent().startActivityForResult(intent,0);这将让ActivityGroup来处理回调。在您的例子中,因为您有三层嵌套,所以您可能必须尝试父或祖父母是否应该负责回调,并对getParent()部分进行适当的修改。
其次,在使当前活动的父类启动意图之后,需要将onAcivityResult()函数添加到父类和当前子类中。在当前类中,您只需像现在一样编写普通的回调句柄消息。但在父类中,onActivityResult()函数将捕获来自正常活动的回调,并将意图传递给当前类。
第三,此步骤适用于父onActivityResult类,在该类中,您需要:
public void onActivityResult(int requestCode, int resultcode, Intent data)
{
super.onActivityResult(requestCode, resultcode, data);
switch (resultcode)
{
case RESULT_OK:
MyChildActivity CA = (MyChildActivity) getLocalActivityManager().getCurrentActivity();
CA.onActivityResult(requestCode, resultcode, data);
}
}正如您所看到的,父ActivityGroup类中的onActivityResult函数只是捕获回调,获取需要跳转到另一个活动的子活动,并将数据传输给它。您可能不需要在您的子活动中使用onActivityResult函数作为步骤2中的状态,但我认为这是一个更好的方法。
希望这对你有所帮助!
https://stackoverflow.com/questions/16371905
复制相似问题