Android 如果输入集中,应用程序在导航时崩溃
我在构建一个应用程序时遇到了一个奇怪的问题。我有一个带有登录表单的片段,当片段被打开时,默认情况下第一个字段是聚焦的,然后如果我点击另一个字段,然后导航到另一个片段,我会在崩溃后看到它Android 如果输入集中,应用程序在导航时崩溃,android,android-fragments,android-input-method,Android,Android Fragments,Android Input Method,我在构建一个应用程序时遇到了一个奇怪的问题。我有一个带有登录表单的片段,当片段被打开时,默认情况下第一个字段是聚焦的,然后如果我点击另一个字段,然后导航到另一个片段,我会在崩溃后看到它 java.lang.NullPointerException: Attempt to invoke interface method 'void android.view.inputmethod.InputConnection.closeConnection()' on a null object referen
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 Studio 3.1 Profiler类似的问题:
<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()
}