Закрыть фрагмент onKeyListener в EditText - PullRequest
0 голосов
/ 30 октября 2019

Возможно, это небольшая проблема для кого-то более опытного, чем я (я работаю с 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 Ответ

1 голос
/ 30 октября 2019

Вы должны удалить this@PalFussFragment вместо того, чтобы пытаться удалить новый экземпляр PalFussFragment()

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

. Предпочитайте использовать requireActivity() вместо activity? напрямую, чтобы убедиться, что фрагмент всегда привязан к действию. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...