有一些关于后栈和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
)
现在我想知道我是否可以忽略最后一个片段,或者在仅剩一个片段并直接显示上一个活动时删除片段返回堆栈?
谢谢。
答案 0 :(得分:0)
@Override
public void onBackPressed() {
finish();
}
只需在onBackPressed()方法上调用finish()。
答案 1 :(得分:0)
有一种方法可以通过只调用finish();
但是,您不应将您的主要活动用作导航标签。这直接导致不良的UI,并会导致不良的UX。
现在重新排列您的UI,避免将来出现更大的问题。