java.lang.UnsupportedOperationException : Can't convert to color: type=0x2 异常

标签 java android

只有在两部华硕智能手机(华硕 Zenfone 5 - API 19 和华硕 Zenfone 2 - API 21)上扩展 EditText 时才会抛出此异常。其他设备/模拟器工作正常。

完整堆栈跟踪:

Exception java.lang.RuntimeException: Unable to start activity ComponentInfo{com.package.example/com.package.example.activity.SignUpActivity}: android.view.InflateException: Binary XML file line #47: Error inflating class EditText
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2318)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2396)
android.app.ActivityThread.access$800 (ActivityThread.java:139)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1293)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:149)
android.app.ActivityThread.main (ActivityThread.java:5257)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:793)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:609)
dalvik.system.NativeStart.main (NativeStart.java)
arrow_drop_down
Caused by android.view.InflateException: Binary XML file line #47: Error inflating class EditText
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:713)
android.view.LayoutInflater.rInflate (LayoutInflater.java:755)
android.view.LayoutInflater.rInflate (LayoutInflater.java:758)
android.view.LayoutInflater.rInflate (LayoutInflater.java:758)
android.view.LayoutInflater.rInflate (LayoutInflater.java:758)
android.view.LayoutInflater.parseInclude (LayoutInflater.java:839)
android.view.LayoutInflater.rInflate (LayoutInflater.java:745)
android.view.LayoutInflater.inflate (LayoutInflater.java:492)
uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate (CalligraphyLayoutInflater.java:60)
android.view.LayoutInflater.inflate (LayoutInflater.java:397)
android.view.LayoutInflater.inflate (LayoutInflater.java:353)
android.support.v7.app.AppCompatDelegateImplV9.setContentView (AppCompatDelegateImplV9.java:284)
android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:143)
com.package.example.activity.SignUpActivity.onCreate (SignUpActivity.java:88)
android.app.Activity.performCreate (Activity.java:5411)
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2270)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2396)
android.app.ActivityThread.access$800 (ActivityThread.java:139)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1293)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:149)
android.app.ActivityThread.main (ActivityThread.java:5257)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:793)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:609)
dalvik.system.NativeStart.main (NativeStart.java)
arrow_drop_down
Caused by java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
android.content.res.TypedArray.getColor (TypedArray.java:327)
android.widget.TextView.<init> (TextView.java:700)
android.widget.EditText.<init> (EditText.java:61)
android.support.v7.widget.AppCompatEditText.<init> (AppCompatEditText.java:62)
android.support.v7.widget.AppCompatEditText.<init> (AppCompatEditText.java:58)
android.support.v7.app.AppCompatViewInflater.createView (AppCompatViewInflater.java:112)
android.support.v7.app.AppCompatDelegateImplV9.createView (AppCompatDelegateImplV9.java:1017)
android.support.v7.app.AppCompatDelegateImplV9.onCreateView (AppCompatDelegateImplV9.java:1076)
android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView (LayoutInflaterCompatHC.java:44)
uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$WrapperFactory2.onCreateView (CalligraphyLayoutInflater.java:280)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:684)
android.view.LayoutInflater.rInflate (LayoutInflater.java:755)
android.view.LayoutInflater.rInflate (LayoutInflater.java:758)
android.view.LayoutInflater.rInflate (LayoutInflater.java:758)
android.view.LayoutInflater.rInflate (LayoutInflater.java:758)
android.view.LayoutInflater.parseInclude (LayoutInflater.java:839)
android.view.LayoutInflater.rInflate (LayoutInflater.java:745)
android.view.LayoutInflater.inflate (LayoutInflater.java:492)
uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate (CalligraphyLayoutInflater.java:60)
android.view.LayoutInflater.inflate (LayoutInflater.java:397)
android.view.LayoutInflater.inflate (LayoutInflater.java:353)
android.support.v7.app.AppCompatDelegateImplV9.setContentView (AppCompatDelegateImplV9.java:284)
android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:143)
com.package.example.activity.SignUpActivity.onCreate (SignUpActivity.java:88)
android.app.Activity.performCreate (Activity.java:5411)
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2270)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2396)
android.app.ActivityThread.access$800 (ActivityThread.java:139)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1293)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:149)
android.app.ActivityThread.main (ActivityThread.java:5257)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:793)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:609)
dalvik.system.NativeStart.main (NativeStart.java)

布局

        <android.support.design.widget.TextInputLayout
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="5dp"
            app:errorTextAppearance="@style/AppTheme.Error"
            app:hintEnabled="true"
            app:theme="@style/AppTheme.TextInput.White">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/nickname"
                android:textColor="@color/white"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/prompt_username"
                android:inputType="textPersonName"
                android:maxLines="1" />

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

主题

<style name="AppTheme.TextInput.White" parent="TextAppearance.AppCompat">
    <item name="colorControlNormal">@color/whiteC</item>
    <item name="colorControlActivated">@color/white</item>
    <item name="android:textColorHighlight">@color/whiteC</item>
    <item name="android:textColorLink">@color/whiteC</item>
    <item name="android:textColorHint">@color/whiteC</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<!--Error-->
<style name="AppTheme.Error" parent="AppTheme.Text.White">
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">italic</item>
</style>

我已经尝试过的事情:

  • 用 EditText 替换 TextInputEditText
  • 从 EditText 中删除 textColor="@color/white"
  • 降级以支持库 24,23。 (目前我在 25.0.1)

最佳答案

感谢this comment通过将文本输入布局主题的父级更改为 ThemeOverlay.AppCompat.Light 解决了这个问题:

<style name="AppTheme.TextInput.White" parent="ThemeOverlay.AppCompat.Light">
    <item name="colorControlNormal">@color/whiteC</item>
    <item name="colorControlActivated">@color/white</item>
    <item name="android:textColorHighlight">@color/whiteC</item>
    <item name="android:textColorLink">@color/whiteC</item>
    <item name="android:textColorHint">@color/whiteC</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<!--Error-->
<style name="AppTheme.Error" parent="AppTheme.Text.White">
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">italic</item>
</style>

关于java.lang.UnsupportedOperationException : Can't convert to color: type=0x2 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40852923/

相关文章:

android - 在 TableLayout 中使用 ScrollView & Horizo​​ntalScrollView

java - JNI Rust 如何将参数传递给 call_static_method?

android - 如何使用 Titanium 在设备中调试应用程序?

android - 从启动器调用 Activity 和/或服务

java - 在 Java 8 的堆栈跟踪中识别 lambda

android - 这个 FFmpeg Command 的语法和逻辑是否正确?

java - Android Matrix 如何使用指定的点进行 postRotate?

java - JTable 二维对象数组

java - 使数据库确定性地失败以进行测试

java - GWT Browser在Client中的区别