Я хочу показывать клавиатуру при активности наСоздать и не задерживать в любое время.
Я проверяю этот ответ и нашел ответ. Это работает, но я не знаю, почему
Может кто-нибудь сказать мне, почему код работает. Спасибо !!
Вот код Вот код Вот код Вот код Вот код
Файл макета
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="50dp" />
</LinearLayout>
Активность
class Test: BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.test)
...
}
private fun showKeyboard(view: View) {
val imm = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
view.requestFocus()
imm.showSoftInput(view, 0)
}
}
Я попробовал несколько методов в onCreate
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.test)
showKeyboard(edittext)// doesn't work
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.test)
Handler().postDelayed({
showKeyboard(edittext)
},500)// It works but I don't want to delay 500 mills
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.test)
edittext.post {
showKeyboard(edittext)// doesn't work
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.test)
edittext.post {
edittext.post {
showKeyboard(edittext)// It works but why???
}
}
}