【问题标题】:How to differentiate activity launch from launcher or up navigation如何区分活动启动与启动器或向上导航
【发布时间】:2015-04-25 14:56:04
【问题描述】:

我需要一种方法来区分来自启动器的活动启动或另一个活动的向上导航。我有一个设置偏好,可以在下次启动应用程序时显示教程,但是当我按下设置活动时会调用教程。

我已经尝试过这里描述的方法(使用 intent.getAction() 和 intent.getCategories())Differentiating between an Activity launch from home screen or from another activity from App,但是当我使用导航而不是返回按钮时它们不起作用

【问题讨论】:

    标签: android android-intent android-activity


    【解决方案1】:

    只需定义全局静态布尔值并将其设置为真,例如。 isLaunch=true 在您的主要活动上并应用条件以在调用显示教程的方法之前检查 isLaunch = true 并在它为 true 时将其设置为 false

     public class MainActivity{
    
            private static boolean isLaunch = true;
    
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                if(isLaunch){
                    isLaunch = false;
                    YourTutorialDisplayingMethod();
                }
    
           }  
        }
    

    【讨论】:

      【解决方案2】:

      检查活动生命周期方法。OnCreate() 仅在您的活动启动时调用一次。但是如果您从该活动开始一个新活动而没有完成它,那么使用向上导航从新打开的活动返回不会调用onCreate 你的活动

      【讨论】:

      • 当我使用返回按钮时它不会调用 onCreate(),但是当我使用操作栏的向上导航时它会调用
      • 好的,您可以使用实例状态方法设置一些计数器并检查实例状态是否为空,然后您的活动第一次被调用。我想这应该可以工作
      • 我不知道出了什么问题,但对我来说,savedInstanceState 始终为空,即使之前调用了 onSaveInstanceState
      • UP 导航的默认行为是清除任务并重新启动根活动。这就是为什么您在onCreate() 中获得的Bundle 为空。它正在启动您的Activity 的新实例。向上导航很难做到正确:-(
      猜你喜欢
      • 1970-01-01
      • 2011-08-13
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多