gpt4 book ai didi

android - OnActivityResult 不适用于 activityGroup

转载 作者:行者123 更新时间:2023-11-29 21:43:57 24 4
gpt4 key购买 nike

我的应用程序使用的是 TabHost。和 ActivityGroup 加载选项卡下的 Activity 。在我的第二个选项卡上,我打开 Activity 组“TabGroupActivity”...,然后从这里我打开一个子 Activity “childActivity2”。从“childActivity2”我想打开一个有主题对话框的正常 Activity 。当我从正常 Activity 返回时,我想在我的 childActivity2 中运行 onActivityResult()。但是 ChildActivity2 中的 onActivityResult() 不起作用。

childActivity2 中启动正常 Activity 的代码是

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");
.................
......
}


}

最佳答案

你的问题和我的一样。问题是 onActivityResult 函数不会直接从 Activity 组中的子 Activity 触发,即使您的 Intent 来自该子 Activity 。

解决方案分为三个步骤。

首先,你得让你的父activity,也就是你的ActiviyGroup类在你需要跳出当前activity的位置调用startActivityForResult函数。在您的 child Activity 中,当您需要为正常 Activity 吃午饭时,请调用:

startActivityForResult(intent, 0);

你应该调用:

getParent().startActivityForResult(intent,0);

这将使 ActivityGroup 负责回调。在你的情况下,由于你有三层嵌套,你可能必须尝试 parent 或祖 parent 是否应该负责回调并对 getParent() 部分进行适当的修改。

其次,当你让当前activity的父类启动intent后,你需要在父类和当前子类中添加onAcivityResult()函数。在当前类(class)中,您只需像现在一样编写正常的回调处理消息。但在父类中,onActivityResult() 函数将捕获从正常 Activity 返回的回调并将 Intent 传递给当前类。

第三,这一步是针对父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函数只是捕获回调,获取你需要跳转到另一个 Activity 的子 Activity ,并将数据传递给它。您可能不需要在您的子 Activity 中完全使用 onActivityResult 函数作为步骤 2 中的状态,但我认为这是一种更好的方法。

希望对您有所帮助!

关于android - OnActivityResult 不适用于 activityGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16371905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com