关闭EditText中KeyListener上的片段



对于比我更有经验的人来说,这可能是一个小问题(我从两个月开始使用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?,以确保片段始终附着在活动上。

最新更新