在EditText

时间:2019-10-30 16:25:29

标签: android android-fragments kotlin

对于比我更有经验的人(我使用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
            })
        }

我在所有帖子中都提到了类似的问题,但是找不到正确的答案。所以,请告诉我我想念的是什么。

谢谢。

1 个答案:

答案 0 :(得分:1)

您应该删除this@PalFussFragment,而不是尝试删除新的PalFussFragment()

requireActivity().supportFragmentManager.beginTransaction()
    .remove(this@PalFussFragment)
    .commit()

最好直接使用requireActivity()而不是activity?来确保片段始终附加在活动上。