从ActivityGroup启动startActivityForResult?

9

当我试图从ActivityGroup启动一个Activity时,似乎无法获得任何结果。我已经在Activity和ActivityGroup中放置了onActivityResult?具体来说,我正在尝试让用户从Intent.ACTION_GET_CONTENT中选择照片/视频,但我从未收到任何返回?我做错了什么?

这是我调用代码的方式:

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

有什么想法吗?

Steven, 你能否提供更多关于代码方面的明确信息吗?谢谢! - Jon
Jon - 看起来Nagkeeran使用了我的方法来解决他的问题。他在以下网址发布了一些示例代码:https://dev59.com/W1rUa4cB1Zd3GeqPgRF7 - Steven Pena
2个回答

41

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

我最终想出/记住了这个问题,因为Android只允许嵌套一层子活动...也就是不能嵌套子活动。要解决此问题:

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

1
我有同样的问题,但我无法理解,请问你能否解释一下? - Dharmendra
1
@Steven Pena,那么您是如何调用getDecorView()来启动startActivityForResult并获取ActivityGroup的替换视图的呢? - Vaibhav Jani
+1 成功了!我按照步骤1和2进行操作。之后,我保持了对当前活动的静态引用,并将结果传回那里 - 有点像黑客但是成功了!谢谢! - Sagar Hatekar

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将会运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接