【问题标题】:startActivityForResult from ActivityGroup?来自 ActivityGroup 的 startActivityForResult?
【发布时间】:2011-05-15 04:01:56
【问题描述】:

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

我是这样称呼代码的:

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

有什么想法吗?

【问题讨论】:

  • Steven,您能否通过代码更清楚地说明您的意思?谢谢!
  • 乔恩 - 看起来 Nagkeeran 使用我的方法来解决他的问题。他发布了一些示例代码:stackoverflow.com/questions/6992142/…

标签: android activitygroup


【解决方案1】:

在您的家长活动中

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我有同样的问题,我无法理解请你解释一下
    • @Steven Pena,那么你是如何调用 getDecorView() for startActivityForResult 来获取 ActivityGroup 的替换视图
    • +1 成功了!我遵循了第 1 步和第 2 步。之后,我维护了对当前活动的静态引用并将结果传播回那里 - 有点像 hack,但有效!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2021-02-14
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多