android - 如果输入集中在导航时,应用程序会崩溃

标签 android android-fragments android-input-method

我正在构建的应用程序有一个奇怪的问题。我有一个带有登录表单的 fragment ,当 fragment 被打开时,第一个字段默认聚焦,然后如果我点击另一个字段然后导航到另一个 fragment ,我会发生以下崩溃。

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)

这是一个登录表单布局,指出我正在使用数据绑定(bind),尽管我不确定这是否相关

<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" />

导航到其他 fragment :

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

起初我认为这个问题与被导航到的 fragment 也有输入这一事实有关。我尝试在没有输入的情况下导航到其他 fragment ,但结果相同。

最佳答案

我发现是什么导致了这个问题,事实证明它与代码无关,而是 Android Studio 3.1 Profiler 此处提到了类似问题:https://www.queryoverflow.gdn/query/app-freeze-on-keypad-open-with-android-studio-3-1-update-27_49556735.html

关于android - 如果输入集中在导航时,应用程序会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797035/

相关文章:

没有身份验证 token 的android联系人同步

android - 如何在 Android/iOS 上调试 Rust?

android - 带有 ImageView 和 TextView 的 Android fragment 的自定义适配器

android - 配置更改后未在 viewpager 中调用 Fragment.onCreateView()

java - 如何在 fragment 中加载字符串数组?

android - 如何删除 Eclipse 构建的 Android 应用程序中的屏幕键

android - 物理设备不会出现,模拟器工作正常

android - 将触摸屏事件发送到前台 Activity (仅来自 APK)

安卓 : How to prevent softkeyboard hidden when hardwarekeyboard input

android - 输入法显示时如何不覆盖EditText?