致命异常:java.lang.UnsupportedOperationException:无法解析索引6处的属性:TypedValue {t = 0x2/d = 0x101009b a = 1}

San*_*wat 9 java android

我在实时应用程序中看到此错误,因此我不知道为什么会发生这种情况.我只有这个异常日志(见下文).起初,我以为我将样式editTextBackgroungWhite(见下文)应用到我的XML中的editText,但删除它对问题没有影响.

如果有人能引导我走向正确的方向,我会很高兴的.

PS我无法在我的设备上复制这个bug似乎只是一些三星笔记本系列设备的问题.

 <style name="editTextBackgWhite"parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlNormal">#ffffff</item>
    <item name="colorControlActivated">#ffffff</item>
    <item name="colorControlHighlight">#ffffff</item>
</style>


Fatal Exception: 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.(TextAppearanceSpan.java)
   at android.text.style.TextAppearanceSpan.(TextAppearanceSpan.java)
   at android.widget.Editor$SuggestionsPopupWindow$SuggestionInfo.(Editor.java)
   at android.widget.Editor$SuggestionsPopupWindow$SuggestionInfo.(Editor.java)
   at android.widget.Editor$SuggestionsPopupWindow.initContentView(Editor.java:2995)
   at android.widget.Editor$PinnedPopupWindow.(Editor.java)
   at android.widget.Editor$SuggestionsPopupWindow.(Editor.java)
   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:7225)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Run Code Online (Sandbox Code Playgroud)

Mr-*_*IDE 9

这个问题的主要原因似乎是AppCompat库中缺少样式/主题,或者是库中的错误。当使用AppCompatEditTextAppCompatAutoCompleteTextView并且WebView也添加到布局时会发生这种情况(AdMob 广告是 WebView)。它发生在 AppCompat 的多个版本上,例如 23、24、25、26。

在某人在 Github 上制作的一个有用的演示应用程序中可以更清楚地看到:

  1. 克隆 repo 并在 Android Studio v2.3 或更高版本中打开。
  2. Android Studio 应该会提示更新此项目中的 gradle 依赖项和 buildToolsVersion,如下所示:

构建.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    ...
}
Run Code Online (Sandbox Code Playgroud)

应用程序/build.gradle:

buildToolsVersion '25.0.0'
Run Code Online (Sandbox Code Playgroud)

gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
Run Code Online (Sandbox Code Playgroud)
  1. 更新依赖项,然后构建项目。在 Android 7 模拟器或设备上运行该应用程序,并使用普通的Android 键盘。将系统语言设置为英语。
  2. 在输入字段中,在 Android 键盘上输入字母“tttf”。然后按空格键。这个词应该加下划线作为拼写错误
  3. 现在单击其中一个字母(不要长按)以尝试移动光标。它应该使应用程序崩溃 - 像这样:

应用程序崩溃的视频截图示例

(从该解决方案在这里)是明确添加 "colorAccent""android:colorAccent"在主AppTheme,在styles.xml:

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者

buildToolsVersion '25.0.0'
Run Code Online (Sandbox Code Playgroud)

这现在将允许出现股票拼写建议弹出窗口,并且不再崩溃。

类似的报告或重复:


Abh*_*war 5

使用AutoCompleteTextView时有完全相同的异常.复制真的很艰难,浪费了我两天的时间.

造成这种情况的原因是Google拼写检查器弹出窗口,在某些设备中启用,导致Edittext/AutoCompleteEdittext中的单词下面出现红线并单击它会打开一个拼写建议弹出窗口.根据我的观察,这个弹出窗口在TextInputLayout(带有样式)方面不太顺利,并导致某些设备崩溃(在我的情况下是Moto G播放).您可以通过关闭Google拼写检查程序来验证它,它会正常工作.但真正的解决方案是添加

android:inputType="textNoSuggestions"

以XML格式编辑文本

这会禁用该edittext的拼写检查,其余工作正常.

如果有帮助,请告诉我.

  • 你的评论真的帮助我解决了这个问题,但是在添加了textNoSuggestions之后,它仍然崩溃了.我修复了它添加:`android:inputType ="textNoSuggestions | textVisiblePassword"` (2认同)