[英]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.