1. ホーム
  2. android

[解決済み] Android 8.0 OreoでTextInputEditTextのフォーカスでクラッシュする。

2022-12-27 22:06:06

質問

アンドロイド8.0にアップデートした後、あるデバイスで TextInputEditText フィールドにフォーカスすると TextInputLayout の中にある場合、アプリは次のようにクラッシュします。 Exception :

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void
android.view.View.getBoundsOnScreen(android.graphics.Rect)' on a null object reference
at android.app.assist.AssistStructure$WindowNode.(AssistStructure.java)
at android.app.assist.AssistStructure.(AssistStructure.java)
at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3035)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1807)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

アンドロイドに行くと 設定 -> システム -> 言語 & 入力 -> 詳細 -> 自動入力サービス -> なし と表示され、その中の TextInputEditText / TextInputLayout はもうクラッシュしません。

デバイス上の新しい 8.0 オートフィル サービスを無効にすることなく、クラッシュを防ぐにはどうしたらよいでしょうか。

8

どのように解決するのですか?

私もこれに遭遇しました。 この問題は、ヒントテキストを EditText の中にネストされた TextInputLayout .

私は少し調べて、26.0.0 Beta 2 のリリース ノートの中にこのナゲットを発見しました。 Android サポート リリース ノート 2017 年 6 月

TextInputLayoutはonProvideAutofillStructure()でヒントを設定する必要があります。

そのため、ヒントの設定を TextInputLayout の代わりに、ネストされた EditText .

これで、私の場合、クラッシュの問題は解決しました。例を挙げます。

<android.support.design.widget.TextInputLayout
    android:id="@+id/textInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Some Hint Text"
    android.support.design:hintAnimationEnabled="true"
    android.support.design:hintEnabled="true"
    android.support.design:layout_marginTop="16dp">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.design.widget.TextInputLayout>

回答として投稿しました ここで として投稿したのですが、ブックマークが混ざってしまいました。同じ回答を2回投稿してしまい、申し訳ありません。