【问题标题】:How to finish an activity from a class in android如何在android中完成一个班级的活动
【发布时间】:2016-01-30 00:20:16
【问题描述】:

我有三个 Activities A 、 B 和 C ; Activity C 上面的 activity B 和 B 上面的 A 。 A类:

button.setonclicklistener...
.
.
.{
startactivity(A.this , B.class() )  ;
}
.
.
.}

B 类:

button.setonclicklistener...
.
.
.{
startactivity(B.this , C.class() )  ;
}
.
.
.}

现在我在 Activity C 中,delete (finish) Activity C 和 B 中的按钮来自活动 C:

button.setonclicklistener...
.
.
.{
Finish();//activity C 
Finish();//activity B 

}
.
.
.}

【问题讨论】:

  • 如果你必须做这样的事情,你可能应该考虑将 B 和 C 组合成一个 Activity 和两个 Fragments,然后在 Fragments 之间切换而不是打开一个新的 @ 987654334@。在大多数情况下,必须完成多个 Activitys 是应用中导航混乱的标志。

标签: android start-activity activity-finish


【解决方案1】:

使用 startActivityForResult 启动 Activity C。在ActivityB中调用onActivityResult时,调用finish。

【讨论】:

    【解决方案2】:

    使用标志 CLEAR_TOP 启动活动 A。

    Intent intent = new Intent(ActivityC.this, ActivityA.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Removes other Activities from stack
    startActivity(intent);
    

    参考:- 1.CLEAR_TOP_REFERENCE

    1. Answer reference

    【讨论】:

    • 这样做的一个问题是活动 A 的意图将被新的意图覆盖。如果您依赖其中的值,这可能是个问题
    • @GabeSechan 在活动 A 中具有值并打开 B 和 C 将是一种奇怪的情况。无论如何,可以通过在 onPause 中保存首选项中的值并将它们重新加载到 onResume 中来处理。没有?
    • 没有。清除顶部标志会删除原始意图。在 A 中有参数然后打开另一个活动并不罕见。也就是说,如果 A 没有参数 clear top 是一个很好的解决方案
    • @GabeSechan 我知道你要去哪里。现在完全同意你的观点。感谢您分享您的观点。
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2020-05-26
    • 2012-05-20
    • 2011-10-10
    • 2013-06-02
    相关资源
    最近更新 更多