我有一个 Package 在TextInputLayout中的TextInputEditText。但是在一些键盘上,当用户有拼写建议,并点击单词以显示建议的弹出列表时,我的应用程序会严重崩溃,键盘留在屏幕上,有时会超出对话框。
这种情况发生在Android 6、7和8上。我可以用运行6.0.1的三星Galaxy S5和三星股票键盘复制这个问题,但不能在同一台设备上使用Gboard或Swype,也不能在运行Android 8.0的Nexus 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)
以下是我能够找到的类似/相关问题:
- Android N crashes in TextAppearanceSpan
- Fatal Exception: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 6: TypedValue{t=0x2/d=0x101009b a=1}
- https://meta.stackexchange.com/questions/292199/android-app-crashes-when-tapping-on-red-underlined-by-the-spell-checker-text-w
不幸的是,似乎唯一的解决办法是禁用所有用户在TextInputEditText字段上的拼写建议,这是相当蹩脚的。
3条答案
按热度按时间anauzrmj1#
在我这里的例子中,我已经将一个自定义textAppearance应用到父TextInputLayout:
主题定义如下所示:
这是不正确的。TextInputLayout的主题不应设置为具有TextAppearance.AppCompat父级的主题。
而不是android:theme,我应该使用app:hintTextAppearance。
s3fp2yjn2#
对我来说问题是
设置为AppCompatEditText
disho6za3#
遇到了同样的问题。我可以将
android:theme
保留为我的自定义样式,但将样式的父样式从TextAppearance.AppCompat
切换到Widget.Design.TextInputLayout
。溢出建议菜单工作正常,我可以保持我想要的样式。希望这能有所帮助。