来自ActivityGroup的startActivityForResult?

时间:2010-11-24 15:01:38

标签: android activitygroup

尝试从活动组启动活动时,似乎无法获得任何结果。我在活动和活动组中放了一个onactivityresult?具体来说,我试图让用户从Intent.ACTION_GET_CONTENT中选择一张照片/视频,但我从来没有得到任何回报?我做错了什么?

以下是我如何调用代码:

Intent pickMedia = new Intent(Intent.ACTION_GET_CONTENT);
   pickMedia.setType("video/*");
   startActivityForResult(pickMedia,12345);

有什么想法吗?

2 个答案:

答案 0 :(得分:41)

我遇到了类似的问题。我有一个ActivityGroup管理子活动。其中一个子活动称为类似的外部意图(我的应用程序外部)。它从未在启动它的子活动中调用onActivityResult。

我终于弄清楚/记得这个问题是因为Android只允许嵌套的子活动层......即子活动不能嵌套子活动。要解决这个问题:

  1. 从您的子活动
  2. 致电getParent().startActivityForResult()
  3. 您的父级(活动组)将能够处理onActivityResult。所以我创建了ActivityGroup的子类并处理了这个onActivityResult
  4. 如果需要,您可以将结果重新路由回子活动。只需按getLocalActivityManager().getCurrentActivity()获取当前活动即可。我的子活动继承自定义活动,因此我在该子类中添加了handleActivityResult(requestCode, resultCode, data),以便ActivityGroup进行调用。

答案 1 :(得分:4)

在您的父母活动中

protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    if (requestCode == YOUR_REQUEST_CODE)   {

        CHILD_ACTIVITY_NAME activity = (CHILD_ACTIVITY_NAME)getLocalActivityManager().getCurrentActivity();

        activity.onActivityResult(requestCode, resultCode, intent);}}

所以你的孩子活动onActivityResult将会运行。