【问题标题】:How to return to an activity closing the in between activities?如何返回关闭活动之间的活动?
【发布时间】:2020-03-04 10:08:55
【问题描述】:

我需要回到我的应用程序的主要活动,但为此,我需要关闭当前活动和主要活动之间的所有活动。

我试过这个:

Intent intent = new Intent(getActivity(), MainMenuActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity( intent );

问题是这样做,主要活动也关闭并重新打开,在主要命运活动中调用 onDestroy()。我需要回到它而不关闭并重新打开它。如何实现?

【问题讨论】:

    标签: android android-intent android-activity activity-lifecycle android-navigation


    【解决方案1】:

    FLAG_ACTIVITY_CLEAR_TOP 上的 documentation 表示

    当前正在运行的实例 [...] 将在其 onNewIntent() 方法中接收您在此处启动的新意图,或者自行完成并以新意图重新启动。如果它已声明其启动模式为“多重”(默认)并且您没有在同一意图中设置 FLAG_ACTIVITY_SINGLE_TOP,那么它将完成并重新创建;对于所有其他启动模式,或者如果设置了 FLAG_ACTIVITY_SINGLE_TOP,则此 Intent 将被传递到当前实例的 onNewIntent()。

    在您的情况下,我假设您的 MainMenuActivity 具有“多重”启动模式。由于您没有设置FLAG_ACTIVITY_SINGLE_TOP,所以设置完成并重新启动。

    所以如果你使用

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|FLAG_ACTIVITY_SINGLE_TOP);
    

    然后根据文档,MainMenuActivity 实例将保持其状态,onNewIntent() 将被调用。

    注意:您可以使用setIntent()Intent 传递到onNewIntent() 中“IntentActivity@”

    【讨论】:

      【解决方案2】:

      您是否尝试将launchMode 设置为MainActivity。请注意,这应该针对特定Activity 内的所有交易进行。检查the options for from documentation

      关于如何启动活动的说明。有四个 与活动标志(FLAG_ACTIVITY_* 常量)在 Intent 对象中确定当 调用活动来处理意图。它们是:

      "standard"
      "singleTop"
      "singleTask"
      "singleInstance"
      

      【讨论】:

        猜你喜欢
        • 2019-05-14
        • 2013-03-01
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 2017-08-07
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多