对于比我更有经验的人(我使用Android已有两个月的时间了),这也许是个小问题,但是我真的无法弄清楚为什么OnKeyListener中的同一行代码行不通。
例如,我可以通过单击片段的“退出”按钮关闭片段,然后返回到“活动”。
btnAbbrechen.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.remove(this)?.commit() // works
}
无论如何,如果我在同一片段中的EditText字段中使用相同的代码,则该片段将不会关闭。
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
})
}
我在所有帖子中都提到了类似的问题,但是找不到正确的答案。所以,请告诉我我想念的是什么。
谢谢。
答案 0 :(得分:1)
您应该删除this@PalFussFragment
,而不是尝试删除新的PalFussFragment()
requireActivity().supportFragmentManager.beginTransaction()
.remove(this@PalFussFragment)
.commit()
最好直接使用requireActivity()
而不是activity?
来确保片段始终附加在活动上。