Android-如何直接转到后退堆栈中的上一个活动,而忽略片段后退堆栈或当前活动中的剩余片段?

时间:2018-10-12 18:56:27

标签: android android-fragments

有一些关于后栈和fragmentManager的问题,但我没有发现有类似的用例。

因此,这是我的用例:在平板电脑上,我在左侧的主要活动是导航页,当用户单击左侧的内容时,在右侧显示的片段。例如。单击General时,general页面将显示在右侧。假设我从Homepage导航到具有Settings和其他设置的General活动,我在平板电脑上默认情况下在右侧显示了General页面(这样,右边的部分不会空白),当我单击后退按钮时,我想直接返回到Homepage,而不是显示右边的空白部分。我通过以下方式解决了这个问题:

override fun onBackPressed() {
    //some code
    if (isTabletLayout && supportFragmentManager.backStackEntryCount == 1) {
        supportFragmentManager.popBackStack()
    }
    super.onBackPressed()
    //some other code
}

但是,即使执行此操作,我也会看到右侧部分闪烁为空白,然后看到之前的活动(在示例中为Homepage

现在我想知道我是否可以忽略最后一个片段,或者在仅剩一个片段并直接显示上一个活动时删除片段返回堆栈?

谢谢。

2 个答案:

答案 0 :(得分:0)

@Override
public void onBackPressed() {
    finish();
}

只需在onBackPressed()方法上调用finish()。

答案 1 :(得分:0)

有一种方法可以通过只调用finish();

但是,您不应将您的主要活动用作导航标签。这直接导致不良的UI,并会导致不良的UX。

现在重新排列您的UI,避免将来出现更大的问题。