Android Как показать клавиатуру без задержки? - PullRequest
0 голосов
/ 09 апреля 2020

Я хочу показывать клавиатуру при активности наСоздать и не задерживать в любое время.

Я проверяю этот ответ и нашел ответ. Это работает, но я не знаю, почему

Может кто-нибудь сказать мне, почему код работает. Спасибо !!

Вот код Вот код Вот код Вот код Вот код

Файл макета

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

1 Ответ

0 голосов
/ 09 апреля 2020

попробуйте это сэр

  val inputMethodManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0)

Надеюсь, это поможет!

...