android - 片断在背压上重叠
问题描述
我有一个navigation drawer
. 有两个名为 A 和 B 的项目。当按下 A 时,Navigation drawer
我正在打开Fragment
A。activity
要显示Fragment A
,以下是我的代码
private fun displayView(fragment: Fragment?, title: String) {
if (fragment != null) {
fragmentManager.beginTransaction()
.replace(R.id.framelayout_sliding_activity, fragment, title)
.commit()
this.invalidateOptionsMenu()
}
}
我不能将它添加fragment
到后台堆栈,因为这是一项要求。现在Fragment A
有两个buttons
A1
和A2
。Onclick
of A1
orA2
我将替换Fragment A
为Fragment A1
or A2
。以下是我的代码
private fun displayView(fragment: Fragment?) {
if (fragment != null) {
val fragmentManager = fragmentManager
fragmentManager?.beginTransaction()
?.replace(R.id.framelayout_sliding_activity,fragment)
?.addToBackStack(null)
?.commit()
}
}
我需要添加Fragment A1
或添加A2
,backstack
因为他们有一个支持button
,layout
所以backbutton
我可以去Fragment A
。
B
同样的情况,当用户按下Navigation Drawer
which opens Fragment B(cannot be added to backstack)
which has two buttons B1
and B2
to open Fragment B1
andB2(B1 and B2 are added to backstack).
假设用户按下A1 button
AFragment
并转到Fragment A1
。现在用户按下B
并Navigation Drawer
按下backbutton
,然后重叠Android(not of layout)
。Fragment A
Fragment B
在我的backpressed
我已经检查过
(fragmentManager.backStackEntryCount != 0 ) -> {
val b = fragmentManager.popBackStackImmediate()
Log.i("Hiii",b.toString())
}
但什么也没发生,片段重叠。我SupportFragmentManager
在所有情况下都在使用。
解决方案
我找到了一个解决方案,代码工作正常,但不确定这是否是正确的方法。如果您有更好的答案,请发布您的答案。
private fun displayView(fragment: Fragment?, title: String) {
if (fragment != null) {
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
fragmentManager.beginTransaction()
.replace(R.id.framelayout_sliding_activity, fragment, title)
.commit()
this.invalidateOptionsMenu()
}
}
推荐阅读
- javascript - .style 不是元素
- javascript - 基于另一个值的 MVC 禁用字段(只读)
- javascript - 如何从 jquery 类访问多个数据到另一个输入字段以使用 python 提取
- html - 为什么我第一次打开页面时我的汉堡菜单会关闭?
- php - Wordpress 分页没有在页面上返回相同数量的帖子
- python - 检查数组以查找字典值中的匹配项并返回键
- objective-c - 苹果事件屏幕中的键盘 UI 问题
- apache-flink - Flink 丰富传入数据和处理时间
- python - 如何更改 pytest 类中参数化堆叠的顺序?
- php - 调用 SOAP 服务返回内部错误(来自服务器)