【问题标题】:How to finish parent activity from child activity without finishing/stopping child activity?如何在不完成/停止子活动的情况下从子活动完成父活动?
【发布时间】:2012-09-16 10:49:55
【问题描述】:

我是安卓的初学者。谁能帮我举个例子?

到目前为止,我已经搜索过它,但没有找到有用的东西。才发现关闭父Activity也需要用setResult()方法关闭子Activity。

我正在寻找的是我的父活动应该从子活动中关闭而不完成子活动。

【问题讨论】:

    标签: java android mobile android-activity android-lifecycle


    【解决方案1】:

    从子活动中,尝试使用返回父活动的 getParent() 方法,然后完成它!

    【讨论】:

    • getParent() 调用仅适用于嵌入式活动,例如活动组(现已弃用)。对于常规活动,getParent() 将始终返回 null。
    【解决方案2】:

    活动回栈就像一个栈一样工作,即您可以将活动弹出和推送到它上面。如果不先在堆栈上删除其上方的活动,则无法从堆栈中删除活动。因此,如果不先完成自己,孩子可能无法完成父母的活动。

    通过使用launchmodesIntent flags,您可以使用多种方法重新排序甚至清除活动回栈。

    【讨论】:

      【解决方案3】:

      创建一个像Context这样的静态变量 静态上下文cntxofParent;在ParentActivity

      然后像这样在 Parent Activiy 中初始化该引用

      cntxofParent=ParentActivityName.this;

      当您处于子活动中时,然后收集该上下文并将其转换为 Activity,如下所示,

      活动父活动;

      parentActivity=(Activity)cntxofParent;

      【讨论】:

        【解决方案4】:

        我建议你阅读一下Task and Back Stack

        首先,如果我没记错的话,android 中的 Activity 会放在一个名为 Activity Stack 的堆栈中。当你开始一个活动时,你可以添加一个会影响堆栈的意图标志,比如

        addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)

        我想我以前做过你想做的事情(我不确定我用的是什么标志,那是很久以前的事了:p)。但只需阅读有关活动任务的信息,即可了解哪种意图标志适合您正在尝试做的事情。

        【讨论】:

        • 感谢您的回复!!了解任务和回栈的好教程。但没有找到任何匹配的意图标志来根据我的要求从子活动中完成父活动。在这里,这是在父活动本身中声明的。
        【解决方案5】:

        活动 A -> 活动 B , 删除活动 A ,

        如果这是你要找的东西

          Intent intent = new Intent(this, B.class);
            startActivity(intent);
            finish();
        

        【讨论】:

        • 感谢您的回复!但我想从子活动中完成父活动。
        • @sunny 在回答之前请正确阅读问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        相关资源
        最近更新 更多