2

Ich habe einen TextInputEditText in ein TextInputLayout gewickelt. Wenn der Benutzer jedoch auf einigen Tastaturen einen Tippvorschlag hat und auf das Wort klickt, um die Popup-Liste der Vorschläge anzuzeigen, stürzt meine App schwer ab und lässt die Tastatur auf dem Bildschirm, manchmal über dem Dialogfeld, stehen.TextInputEditText Rechtschreibkorrekturabsturz?

Dies passiert auf Android 6, 7 und 8. Ich kann das Problem mit einem Samsung Galaxy S5 mit 6.0.1 und die Aktie Samsung Tastatur, aber nicht Gboard oder Swype auf dem gleichen Gerät und auf einem Nexus replizieren 5x läuft Android 8.0 mit der Standard-Google-Tastatur.

Die Anwendung zielt auf 26 und verwendet die Design-Support-Bibliothek Version 26.1.0. Der gleiche Stack-Trace ist für uns über mehrere Versionen der Support-Bibliothek hinweg aufgetaucht, und es wird behauptet, dass ein ähnliches Problem bereits zuvor behoben wurde.

Es war ziemlich schwierig, die Ursache aufzuspüren und zu replizieren. Ich setze keine speziellen Themen oder Farben - nur appcompat. Hier ist der Stack-Trace:

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) 

Hier ist ähnlich/Fragen konnte ich finden:

Leider scheint es, wie der einzige Problemumgehung besteht darin, Rechtschreibvorschläge für alle Benutzer auf T zu deaktivieren extInputEditText Felder, was ziemlich lahm ist. Ich bin offen für andere Ideen/Vorschläge.

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

Das Thema Definition sah wie folgt aus:

+0

Mein Design erweitert Theme.AppCompat.Light.DarkActionBar. Ich habe versucht Theme.AppCompat.Light, Theme.AppCompat, Theme.Design und Theme.Design.Light, und der Absturz ist in allen von ihnen gleich. – Mark

+0

Eine Lösung finden Sie unter https://stackoverflow.com/questions/41727729#47242474 und Sie müssen die Textvorschläge nicht deaktivieren. –

+0

@ Mr-IDE Das hat nichts, was mit diesem speziellen Problem hilft (zumindest in meinem Fall). Wie ich in meiner Antwort festgestellt habe, war dies darauf zurückzuführen, dass TextApperance.AppCompat als übergeordnetes Element eines Stils verwendet wurde und dieses anstelle von hintTextAppearance als Thema verwendet wurde. – Mark

Antwort

0

In meinem Fall hier hatte ich eine benutzerdefinierte textAppearance an die Mutter TextInputLayout angewendet

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

Das war nicht korrekt. Das TextInputLayout-Thema sollte nicht auf etwas mit einem übergeordneten Element von TextAppearance.AppCompat festgelegt werden.

Anstelle von Android: Thema, hätte ich app: hintTextAppearance.

Verwandte Themen