2

私はTextInputEditTextをTextInputLayoutにラップしています。しかし、いくつかのキーボードでは、ユーザーがスペルの提案をして、候補のポップアップリストを表示するために単語をタップすると、アプリがキーボードを画面上に残し、時にはダイアログの上にくることがあります。TextInputEditText Spelling Correctionクラッシュ?

これはAndroid 6,7、および8で発生します。 同じデバイスにGboardまたはSwypeではなく、6.0.1とSamsung Samsung Keyboardを搭載したSamsung Galaxy S5で問題を再現できます.NexusデフォルトのGoogleキーボードを使用してAndroid 8.0を実行する5x

アプリケーションは26をターゲットとし、デザインサポートライブラリのバージョン26.1.0を使用しています。この同じスタックトレースは、サポートライブラリのいくつかのバージョンにわたって私たちの間に現れています。これは以前に修正されていると主張されています。

原因を追跡して複製するのはかなり困難でした。私は特別なテーマや色を設定していません - ちょうどappcompat。ここでスタックトレースです:

java.lang.UnsupportedOperationException: Failed to resolve attribute at index 6: TypedValue{t=0x2/d=0x101009b a=1} 
    at android.content.res.TypedArray.getColorStateList(TypedArray.java:484) 
    at android.text.style.TextAppearanceSpan.<init>(TextAppearanceSpan.java:65) 
    at android.text.style.TextAppearanceSpan.<init>(TextAppearanceSpan.java:45) 
    at android.widget.Editor$SuggestionsPopupWindow$SuggestionInfo.<init>(Editor.java:3012) 
    at android.widget.Editor$SuggestionsPopupWindow$SuggestionInfo.<init>(Editor.java:3007) 
    at android.widget.Editor$SuggestionsPopupWindow.initContentView(Editor.java:2995) 
    at android.widget.Editor$PinnedPopupWindow.<init>(Editor.java:2844) 
    at android.widget.Editor$SuggestionsPopupWindow.<init>(Editor.java:2969) 
    at android.widget.Editor.showSuggestions(Editor.java:2229) 
    at android.widget.Editor$2.run(Editor.java:2109) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:158) 
    at android.app.ActivityThread.main(ActivityThread.java:7224) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

は、ここで私は見つけることができたと類似/関連の問題です:

残念ながら、それだけのように思えます回避策は、Tのすべてのユーザーに対してスペルの候補を無効にすることですextInputEditTextフィールドはかなり不自由です。私は他のアイデアや提案にもオープンしています。私の場合は

+0

テーマはTheme.AppCompat.Light.DarkActionBarを拡張しています。 私はTheme.AppCompat.Light、Theme.AppCompat、Theme.Design、Theme.Design.Lightを試しましたが、クラッシュはすべて同じです。 – Mark

+0

解決策については、https://stackoverflow.com/questions/41727729#47242474を参照してください。テキスト候補を無効にする必要はありません。 –

+0

@ Mr-IDEこれは、この特定の問題に役立つものはありません(少なくとも私の場合)。私の答えで述べたように、TextApperance.AppCompatをスタイルの親として適用し、hintTextAppearanceではなくテーマとして使用していたためです。 – Mark

答えて

0

は、ここでは、私は親TextInputLayoutにカスタムtextAppearanceを適用していた:

<android.support.design.widget.TextInputLayout 
     android:textColorHint="@color/textColorPrimary" 
     android:textColor="@color/textColorPrimary" 
     android:theme="@style/smallHint" 
     android:hint="@string/add_a_comment" 
     android:layout_marginEnd="16dp"> 

     <android.support.design.widget.TextInputEditText 
     android:id="@+id/comment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="12sp" 
     android:inputType="textImeMultiLine|textCapSentences" 
     android:importantForAutofill="noExcludeDescendants" 
     tools:ignore="UnusedAttribute"/> 

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

テーマ定義はこのように見えた:

<style name="smallHint" parent="TextAppearance.AppCompat"> 
    ... 
</style> 

これは正しくありませんでした。 TextInputLayoutのテーマは、TextAppearance.AppCompatの親を持つものに設定しないでください。

android:themeの代わりに、app:hintTextAppearanceを使用してください。

関連する問題