Приложение падает при навигации, если ввод сфокусирован

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

java.lang.NullPointerException: Attempt to invoke interface method 'void android.view.inputmethod.InputConnection.closeConnection()' on a null object reference
    at android.view.inputmethod.InputConnectionWrapper.closeConnection(InputConnectionWrapper.java:270)
    at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:541)
    at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

Вот макет формы входа, чтобы указать, что я использую привязку данных, хотя я не уверен, может ли это быть связано

<android.support.design.widget.TextInputEditText
    android:id="@+id/edit_login_form_email"
    style="@style/AppEditTextTheme"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/login_form_edit_email"
    android:inputType="textEmailAddress"
    android:maxLines="1"
    android:text="@={loginModel.username}" />
</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
    android:id="@+id/input_login_form_edit_password"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    app:passwordToggleEnabled="true">

<android.support.design.widget.TextInputEditText
    style="@style/AppEditTextTheme"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/login_form_edit_password"
    android:inputType="textPassword"
    android:maxLines="1"
    android:text="@={loginModel.password}" />
</android.support.design.widget.TextInputLayout>

<Button
    android:id="@+id/button_login_form_register"
    style="@style/Base.Widget.AppCompat.Button.Borderless"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:onClick="@{() -> interaction.onRegisterClick()}"
    android:text="@string/login_form_button_register"
    android:textColor="@color/regularGrey" />

Переход к другому фрагменту:

override fun onRegisterClick() {
    fragmentManager!!.beginTransaction()
            .replace(R.id.fragment_container, RegisterFragment())
            .addToBackStack(null)
            .commit()
}

Сначала я подумал, что эта проблема имеет какое-то отношение к тому факту, что фрагмент, к которому осуществляется навигация, также имеет входные данные. Я попытался перейти к другому фрагменту без ввода, и это привело к тому же.

1 ответ

Решение

Я выяснил, что было причиной этой проблемы, оказалось, что это не имеет ничего общего с кодом, но Android Studio 3.1 Profiler Подобная проблема была упомянута здесь: https://www.queryoverflow.gdn/query/app-freeze-on-keypad-open-with-android-studio-3-1-update-27_49556735.html

Другие вопросы по тегам