当我按下返回时导航片段的问题
Problem with navigating fragments when i press on back
有一个显示 recyclerView
列表的片段。
当我单击 MainActivity
中的列表项时,我调用方法:
fun FragmentActivity?.replaceFragment(fragment: Fragment): Boolean {
if (this == null) return false
try {
supportFragmentManager?.beginTransaction()?.replace(
R.id.container, fragment,
fragment.createTagName()
)?.commit()
} catch (ignored: IllegalStateException) {
return false
}
return true
}
在此之后我按下系统后退按钮,我有一个重复的列表。
还有我的 MainActivity
下一个乐趣:
override fun onBackPressed() {
val onBackPressListener = currentFragmentInContainer() as? OnBackPressListener
if (onBackPressListener?.onBackPress() != true) {
super.onBackPressed()
}
}
问题是您没有将当前片段添加到返回堆栈。
为了到达起点,您必须标记片段。 addToBackStack(tag:String)
将帮助您做到这一点。
代码:
fun FragmentActivity?.replaceFragment(fragment: Fragment): Boolean {
if (this == null) return false
try {
supportFragmentManager?.beginTransaction()?.replace(
R.id.container, fragment,
fragment.createTagName()
).addToBackStack(fragment.createTagName())?.commit()
} catch (ignored: IllegalStateException) {
return false
}
return true
}
这是关于该方法的文档:addToBackStack
有一个显示 recyclerView
列表的片段。
当我单击 MainActivity
中的列表项时,我调用方法:
fun FragmentActivity?.replaceFragment(fragment: Fragment): Boolean {
if (this == null) return false
try {
supportFragmentManager?.beginTransaction()?.replace(
R.id.container, fragment,
fragment.createTagName()
)?.commit()
} catch (ignored: IllegalStateException) {
return false
}
return true
}
在此之后我按下系统后退按钮,我有一个重复的列表。
还有我的 MainActivity
下一个乐趣:
override fun onBackPressed() {
val onBackPressListener = currentFragmentInContainer() as? OnBackPressListener
if (onBackPressListener?.onBackPress() != true) {
super.onBackPressed()
}
}
问题是您没有将当前片段添加到返回堆栈。
为了到达起点,您必须标记片段。 addToBackStack(tag:String)
将帮助您做到这一点。
代码:
fun FragmentActivity?.replaceFragment(fragment: Fragment): Boolean {
if (this == null) return false
try {
supportFragmentManager?.beginTransaction()?.replace(
R.id.container, fragment,
fragment.createTagName()
).addToBackStack(fragment.createTagName())?.commit()
} catch (ignored: IllegalStateException) {
return false
}
return true
}
这是关于该方法的文档:addToBackStack