gpt4 book ai didi

android - 启动多个嵌套 Activity 并在 ActivityResult 上获得结果的规范方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:10:42 24 4
gpt4 key购买 nike

我有以下要求:

Activity A ---> Activity B ---> 打开图库应用

传统上,我使用 TaskStackBuilder 启动嵌套 Activity .所以我会做这样的事情:

                TaskStackBuilder tsb = TaskStackBuilder.create(this);
Intent activityIntentA = new Intent(this, ActivityA.class) // ...
tsb.addNextIntent(activityIntentA);

Intent activityIntentB = new Intent(this, ActivityB.class) // ...
tsb.addNextIntent(activityIntentB);

Intent galleryIntent = new Intent(Intent.ACTION_PICK);
galleryIntent.setType("image/*");
tsb.addNextIntent(galleryIntent);

// this.startActivities(new Intent[] {activityIntentA, activityIntentB, galleryIntent});
tsb.startActivities();

(附带的问题是使用任务堆栈构建器或调用 startActivities() 之间是否存在差异)。

但这种方法的问题在于,当 galleryIntent 关闭时,它不会调用 onActivityResult 而是调用 ActivityB 的 OnCreate 方法,这意味着我丢失来自图库应用程序的信息,这些信息是通过我对 activityB 的 onActivityResult 调用的 Intent 参数“数据”提供的。

另一种解决方案是手动启动调用,因此首先调用 Activity B,然后使用标志/参数/参数启动 galleryIntent,然后使用 OnActivityResult .

是否有更好的方法来解决这个需求?

最佳答案

我感觉 TaskStackBuilder 不能很好地适应您的需求。我会以更简单的方式处理它。

*我假设交互从 Activity A 开始,然后您需要打开图库,但需要 Activity B 来处理结果。

我将打开 Activity B 并从那里启动画廊的 Intent 。一旦画廊将结果发送给 B,您就可以在那里进行任何处理。在额外处理之后,如果需要,您始终可以将另一个结果从 Activity B 传送到 A。

请注意,您需要在图库打开之前创建 Activity B 并监听结果。

关于android - 启动多个嵌套 Activity 并在 ActivityResult 上获得结果的规范方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24253580/

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