规范的方法是启动多个嵌套活动并获得结果onActivityResult

时间:2014-06-16 23:16:20

标签: android

我有以下要求:

活动A --->活动B --->打开图库应用

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

                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方法,这意味着我将失去即将发布的信息来自图库应用程序,通过意图参数提供#34;数据"在我的onActivityResult调用activityB。

另一种解决方案是手动启动呼叫,因此首先调用Activity B,然后使用flag / param / argument,启动galleryIntent,然后使用OnActivityResult跟随常规流程。

有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

我觉得TaskStackBuilder不能很好地适应您的需求。我会以一种更容易的方式接近它。

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

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

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