【问题标题】:How to finish Activity when starting other activity in Android?在Android中启动其他活动时如何完成活动?
【发布时间】:2013-09-23 10:36:12
【问题描述】:

我在完成之前的活动时遇到问题。我想开始另一个活动并完成当前活动。当我使用finish 时,它并没有退出当前活动。

如何退出之前的活动?

【问题讨论】:

  • 意图意图 = new Intent(A.this, B.class);开始活动(意图);完成();
  • 您的意思是,这两个活动不可能同时运行,听起来如果第一个活动已死,您将需要第三方来启动第二个活动。如果是这样,您可能需要某种带有计时器的服务。
  • 将完成() 将活动直接从 onResume() 带到 onDestroy() ?

标签: android android-activity


【解决方案1】:

您需要先通过startActivityintent 您当前的context 参加另一个活动。之后,您可以从重定向的位置finish 您当前的activity

 Intent intent = new Intent(this, FirstActivity.class);// New activity
 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
 startActivity(intent);
 finish(); // Call once you redirect to another activity

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - 清除活动堆栈。如果您不想清除活动堆栈。那么请不要使用那个标志。

【讨论】:

  • 为什么我们使用 FLAG_ACTIVITY_CLEAR_TOP @vikalp patel??
  • 它确保您无法使用 BACK 按钮返回上一个活动。
  • 您还可以使用@Override public void onBackPressed() 方法来定义您希望在按下后退按钮时的特定行为(将其留空也会阻止它返回到上一个活动)。
  • 如果 FLAG_ACTIVITY_CLEAR_TOP 清除堆栈,为什么我们需要 finish()
【解决方案2】:
Intent i = new Intent(this,NewLaunchingActivity.Class);
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Call Only, if you wants to clears the activity stack else ignore it. 
    startActivity(i);
    finish();

如果要清除活动堆栈,请添加 Intent Flag Intent.FLAG_ACTIVITY_CLEAR_TOP,否则忽略它。阅读更多关于此here 的信息。

【讨论】:

    【解决方案3】:

    最好的 - 也是最简单的 - 解决方案可能是这样的:

    Intent intent = new Intent(this, OtherActivity.class);
    startActivity(intent);
    finishAndRemoveTask();
    

    finishAndRemoveTask() 的文档:

    当您的活动完成并应关闭时调用此方法,并且应在完成任务的根活动时将任务完全删除。

    这就是你要找的吗?

    【讨论】:

      【解决方案4】:
      1. 在清单文件中创建您的活动 A:launchMode = "singleInstance"
      2. 当用户点击新建时,执行FirstActivity.fa.finish(); 并调用新的 Intent。
      3. 当用户点击修改时,调用新的 Intent 或简单地完成活动 B。

      【讨论】:

        【解决方案5】:
        startActivity(new Intent(context, ListofProducts.class)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
            .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK));
        

        【讨论】:

        • 能否请您为您的答案添加更多上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。
        【解决方案6】:

        这方面的简单例子可以是 (Kotlin)

        val intent = intent(this,exampleSecondActivity::class.java)
        startActivity(intent)
        finsih() //this will do all the work for you
        

        当我从启动活动导航到主屏幕时它对我有用

        【讨论】:

          【解决方案7】:

          例如:您正在使用两个 Activity,如果您想从 Activity A 切换到 Activity B

          像这样简单地给予。

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

          【讨论】:

          • Finish 不会立即终止当前活动。这只是一个信号。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-11
          相关资源
          最近更新 更多