Android kotlin - EditText закрыть действие на BackPressed - PullRequest
0 голосов
/ 09 марта 2020

Это то, что я пробовал:

override fun onBackPressed() {
    nicknameInput.clearFocus()
    finish()
}

Он закрывает только программную клавиатуру, но не активирует, а также не очищает фокус.

Решение здесь:

Android - onBack Нажатие закрытой программной клавиатуры И действие

работает только для SearchView

РЕДАКТИРОВАТЬ:

Это почти все действие :

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_set_nickname)

    prefs = getSharedPreferences("userData", 0)

    val preset = intent.getStringExtra("preset")
    nicknameInput.setText(preset)

    openSoftKeyboard(this, nicknameInput)

    nicknameBG.setOnClickListener {
        finish()
    }

    btnNotNowNickname.setOnClickListener {
        finish()
    }

    btnSaveNickname.setOnClickListener {
        checkNickname()
    }

    nicknameInput.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
        // Log.d("pikabo", keyCode.toString())

        if(keyCode == KeyEvent.KEYCODE_ENTER) {
            checkNickname()
            return@OnKeyListener true
        }

        false
    })

} // ON CREATE




private fun openSoftKeyboard(context: Context, view: View) {
    view.requestFocus()
    this.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
}

Отсутствует только функция checkNickname (), которая здесь точно не нужна

1 Ответ

0 голосов
/ 09 марта 2020

Используя это, вы можете прослушивать нажатие клавиши на тексте редактирования и передавать свой вид текста редактирования, чтобы скрыть функцию, чтобы закрыть его. замените представление ссылкой на текст редактирования.

view.setOnKeyListener(object : View.OnKeyListener {
        override fun onKey(p0: View?, keyCode: Int, event: KeyEvent?): Boolean {

            if (event!!.action == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK ) {
              hide(view)
              onBackPressed()
              return true
        }
         return false
    })

и, используя ее, вы можете закрыть клавиатуру

  private fun hide(editText: EditText) {
            try {
                val inputMethodManager =  this.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
                inputMethodManager.hideSoftInputFromWindow(editText.windowToken, 0)
            } catch ( e:Exception) {
                Log.d("TAG",e.message+"")
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...