Как программно закрыть SearchView при нажатии? во фрагменте - PullRequest
1 голос
/ 01 августа 2020

Сейчас у меня есть SearchView на панели действий моего приложения. Когда я щелкаю значок поиска, SearchView расширяется, и клавиатура появляется, как и ожидалось. Щелчок «X» в поле SearchView закрывает SearchView, как и ожидалось. Однако, когда SearchView активируется и я нажимаю кнопку «назад», мое приложение закрывается. Это правильное поведение, но сейчас я пытаюсь зафиксировать нажатие кнопки возврата в моем фрагменте и просто закрыть SearchView (а не мое приложение), когда SearchView виден. Есть ли способ программно вызвать SearchView OnCloseListener () при нажатии кнопки «Назад»? то, что у меня сейчас в My onCreate () во фрагменте:

        activity?.onBackPressedDispatcher?.addCallback(this, object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                if (!searchView.isIconified) {

                    hideKeyboard()
                   searchView.onActionViewCollapsed()
                    false


                }

            }
        })

это работает нормально, но у меня есть 2 проблемы, я должен дважды щелкнуть кнопку «Назад» и второй, я никогда не смогу существовать в приложении, даже если Я возвращаюсь в свой список просмотра ресайклера

1 Ответ

0 голосов
/ 04 августа 2020

После нескольких дней поиска вот что сработало для меня: activity? .OnBackPressedDispatcher? .AddCallback (this, object: OnBackPressedCallback (true) {переопределить fun handleOnBackPressed () {if (! SearchView.isIconified) {toolbar.collapseActionView () } else {this.isEnabled = false activity? .onBackPressed ()}}})

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