【问题标题】:Return to Specific Activity in 2 different Condition when Back button Pressed Kotlin按下后退按钮时返回到 2 种不同条件下的特定活动 Kotlin
【发布时间】:2018-04-26 09:45:27
【问题描述】:

Activity A,B,C,D .first 路径是 A->C->D 。当从 D 按下返回按钮时,它将像 D->C->A 一样。但我的要求是D->A。 在同一个应用程序中,我有另一个条件。第二条路径是 A->B->C->D。当从 D 按下后退按钮时,它会像 D->C->B->A 一样发生。但我的要求是 D ->一个。 如何在我的应用程序中轻松满足这两个要求? 但请注意,当从 C 点返回时,它应该转到 B。

【问题讨论】:

  • val intent = Intent(this, YourActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) startActivity(intent) finish()
  • 我用过安科。所以 statrtActivity() 我怎样才能用这段代码添加意图标志。
  • startActivity(activity.intentFor<YourActivity>().doWhatever
  • 如何在代码 startActivity(activity.intentFor().Here 之后添加两个标志

标签: android android-intent kotlin flags back-stack


【解决方案1】:

像这样覆盖 D 中的 onBackPressed()

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, A.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(intent);
    finish();
}

这将从堆栈中删除 D 和 A 之间的所有活动并返回到 A 的现有实例。

注意:这是 Java,不是 Kotlin,但您应该能够弄清楚如何对代码进行 Kotlinize ;-)

【讨论】:

    【解决方案2】:

    有两种选择

    1) 通过 On BackPress Kotlin:

    override fun onBackPressed() {
      val intent = Intent(this, A::class.java)
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
      startActivity(intent)
      finish()
    }
    

    2)通过 Manifest.xml

    如何为相关活动添加清单文件:

    android:noHistory="true"
    

    对 B 和 C 的活动定义?它们不会被添加到 backstack 中。不确定这是否是您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多