我有以下要求:
活动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
跟随常规流程。
有没有更好的方法来解决这个问题?
答案 0 :(得分:3)
我觉得TaskStackBuilder不能很好地适应您的需求。我会以一种更容易的方式接近它。
*我假设交互从活动A开始,然后你需要打开图库,但需要活动B来处理结果。
我打开活动B并从那里启动画廊的意图。一旦图库向B发送结果,您就可以在那里进行任何处理。 在额外处理之后,如果需要,您可以始终将活动B的另一个结果传递给A。
请注意,您需要在图库打开之前创建活动B并监听结果。