【问题标题】:Stop from navigating back to an activity停止导航回活动
【发布时间】:2014-12-08 13:03:29
【问题描述】:

我有一个包含两个活动的应用程序。 MainActivity(这是启动器活动)和LoginActivity。一旦用户启动应用程序,MainActivity 就会被跳过并显示LoginActivity。但是,如果您按下返回按钮,您仍然可以导航到MainActivity。我正在使用以下代码来阻止这种情况的发生,但是它不起作用。

MainActivity类中:

Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

有什么想法吗?

【问题讨论】:

    标签: android android-intent navigation


    【解决方案1】:
    Intent intent = new Intent(this, LoginActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    

    如果设置了两次,将设置最后一个。

    【讨论】:

    • 这非常有效。我不能使用finish() 方法,因为我必须重新使用它。谢谢!
    【解决方案2】:

    startActivity(intent); 之后使用finish(); ... finish();一旦您从中导航,就会终止该活动。

    【讨论】:

      【解决方案3】:

      只需在最后添加finish(); 并将标志更改为CLEAR_TOP 而不是CLEAR_TASK

      Intent intent = new Intent(this, LoginActivity.class);
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      startActivity(intent);
      finish();
      

      【讨论】:

        【解决方案4】:

        你有两个选择 第一:如果你想回去工作,但 MainActivity 不应该在 Back 上,那么 finish() MainActivity。

        喜欢

         Intent intent = new Intent(this, LoginActivity.class);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
         startActivity(intent);
         finish();//this line will finish MainActivity, then there will no instance of MainActivity in backstack.
        

        第二:如果你停止后退按钮工作,你可以覆盖 OnBackPressed() metjod 并从中删除超级...然后后退按钮将不起作用(设备)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多