简体   繁体   English

Android kotlin - EditText 关闭活动 onBackPressed

[英]Android kotlin - EditText close activity onBackPressed

This is what I've tried:这是我尝试过的:

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

It only closes soft keyboard but not activity and it also not clears the focus.它只关闭软键盘而不关闭活动,也不会清除焦点。

The solution here:解决方法在这里:

Android - onBackPressed close soft keyboard AND activity Android - onBackPressed 关闭软键盘和活动

only works for SearchView仅适用于SearchView

EDIT:编辑:

This is almost the whole activity:这几乎是整个活动:

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)
}

Only the function checkNickname() is missing which isn't necessary here for sure只有函数 checkNickname() 丢失了,这在这里肯定不是必需的

Using this you can listen for key pressed on edittext and pass your edittext view to hide function to close it.使用它,您可以监听在 edittext 上按下的键并传递您的 edittext 视图以隐藏功能以关闭它。 replace view with your edittext reference.用您的 edittext 参考替换视图。

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
    })

and using it you can close your keyboard并使用它你可以关闭你的键盘

  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+"")
            }
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM