【问题标题】:Android-finish function in activity didn't work活动中的 Android 完成功能不起作用
【发布时间】:2017-02-22 18:36:38
【问题描述】:

我从 MainActivity 扩展了活动 A、B、C。 A先开始,A开始B,B开始C。 当我在活动 C 中的 onclick 特殊按钮中使用 finish() 时,活动 A 已启动,但我希望活动 B 开始。 这个案子我怎么办?

【问题讨论】:

  • 检查您正在使用的意图过滤器并检查 AndroidManifest 中与活动关联的 noHistory xml 属性
  • @Shubham 我没有使用 noHistory,我检查了一下

标签: android android-activity activity-finish


【解决方案1】:

像下面这样开始所有活动:

Intent i = new Intent(this,NewActivity.class);

startActivity(i);

不要添加 finish() 方法,然后在按钮内单击只需调用 finish() 方法。它将带您回到之前的活动。

【讨论】:

    【解决方案2】:

    当 Activity C 完成时,您不能可靠地期望 Activity B 在堆栈上,因为如果需要内存,Android 可以销毁后台 Activity。如果您的用例建议在 Activity C 关闭时 Activity B 应该始终可见,您应该明确启动它,如Navigating Up to Parent Activity 中所述。在你的情况下,我认为在onBackPressed() 中使用NavUtils.navigateUpFromSameTask(this) 是合适的。

    【讨论】:

    • 在此代码中 B 可能从 A 和其他活动开始,并且没有固定的父项
    • 您必须为 C 指定父级,而不是 B。
    • 我忘了说 C 活动启动 D 活动,在 C 和 D 中,当我使用完成功能时,A 活动开始
    • 这个想法是你不应该期望任何以前的活动在下一个完成时保留在任务中。考虑到这个想法来设计您的应用程序。
    【解决方案3】:

    AActivity.java

    Intent i = new Intent(this,BActivity.class);
    startActivity(i);
    

    BActivity.java

    Intent i = new Intent(this,CActivity.class);
    startActivity(i);
    

    CActivity.java

    Intent i = new Intent(this,BActivity.class);
    startActivity(i);
    finish();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2017-02-28
      • 2020-11-14
      • 2014-03-11
      相关资源
      最近更新 更多