对于比我更有经验的人来说,这可能是一个小问题(我从两个月开始使用Android(,但我真的不明白为什么OnKeyListener中的同一行代码不起作用。
例如,我可以通过单击片段的退出按钮来关闭片段,然后返回到我的活动。
btnAbbrechen.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.remove(this)?.commit() // works
}
不管怎样,如果我在同一个Fragment的EditText字段中使用相同的代码,则Fragment不会关闭。
eTPalFussNr.apply {
requestFocus()
setOnKeyListener(View.OnKeyListener { _, keyCode, event ->
if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_DOWN) {
// activity?.supportFragmentManager?.popBackStack() // nothing happens
activity?.supportFragmentManager?.beginTransaction()?.remove(PalFussFragment())?.commit() // nothing happens
return@OnKeyListener true
}
false
})
}
我关注了SO上所有有类似问题的帖子,但找不到正确的答案。所以,请告诉我我错过了什么。
提前谢谢。
您应该删除this@PalFussFragment
,而不是尝试删除PalFussFragment()
的新实例
requireActivity().supportFragmentManager.beginTransaction()
.remove(this@PalFussFragment)
.commit()
优选使用requireActivity()
而不是直接使用activity?
,以确保片段始终附着在活动上。