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

2022-09-03 06:36:42

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

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

PS我无法在我的设备上复制此错误,似乎这只是某些三星笔记系列设备的问题。

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

答案 1

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

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

  1. 克隆存储库并在 Android Studio v2.3 或更高版本中打开。
  2. Android Studio 应该提示更新 gradle 依赖项并在此项目中构建ToolsVersion,如下所示:

build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.3'
    ...
}

app/build.gradle:

buildToolsVersion '25.0.0'

gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
  1. 更新依赖项,然后生成项目。在Android 7模拟器或设备上运行该应用程序,并使用库存Android键盘。将系统语言设置为英语。
  2. 在输入字段中,键入安卓键盘上的字母“tttf”。然后按空格键。该词应加下划线,因为拼写错误
  3. 现在单击其中一个字母(不是长按)以尝试移动光标。它应该使应用程序崩溃 - 如下所示:

Video screenshot example of the app crash

解决方案(从这里开始)是在你的主 AppTheme 中显式添加“colorAccent”“android:colorAccent”,样式.xml:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:colorAccent" tools:targetApi="lollipop">@color/colorAccent</item>
</style>

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:colorAccent" tools:targetApi="lollipop">@color/colorAccent</item>
</style>

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

类似报告或重复报告:


答案 2

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

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

android:inputType="textNoSuggestions"

到 XML 中的编辑文本

这将禁用该编辑文本的拼写检查器,其余部分工作正常。

让我知道它是否有帮助。


推荐