自定义后退导航

时间:2017-06-22 11:29:25

标签: android back-stack android-navigation onbackpressed

首先我读了this article,但对我来说有点复杂。我需要的是在onBackPressed()覆盖中转到我想要的活动(导航如果存在于后台堆栈中,或者如果不是则使用Intent启动它)。我应该管理堆栈 或者是其他东西 ?如果有,怎么样?如果没有什么是简单的方法呢?

P.S:我不使用ActionBar

3 个答案:

答案 0 :(得分:1)

你应该覆盖第二个活动的onBackPressed()方法并将android:launchMode="singleInstance"添加到AndroidManifest.xml中的第一个活动中,这将从backstack启动第一个活动,或者如果它不存在则创建新活动返回堆栈。

答案 1 :(得分:1)

在需要的地方使用startActivityForResult()。不要创建相同活动的新实例。也就是说,如果您想要返回上一个活动,只需从此活动中调用finish()即可。

Understand different launchmodes

如上面的链接所述,singleInstance launchMode可能很棘手,可能会导致问题。

答案 2 :(得分:1)

求助:作为mentioned in this answer并根据评论,如果我们想将(现有)活动置于前面,将Intent标志设置为:

    Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

不会创建我们想要的Activity的新实例,只需将它带到前面。如果我们在一个活动之上有多个活动,这将非常有用。