【发布时间】:2016-05-30 03:30:33
【问题描述】:
我已将主题添加到我的应用程序中。为此,我使用了多种强调色来添加图像按钮。我有一个名为 fab selector xml 的 xml 文件,它为图像按钮提供形状和颜色。但它在这个文件上给出了例外。
第一个异常是类图像按钮的 inflateException。 第二个是找不到工厂选择器的资源异常。 Fab 选择器位于 drawable 文件夹中。
它还显示 ,, 原因:java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
如果我使用<solid android:color="?attr/colorAccent" />
?attr/colorAccent 如果我使用它就可以正常工作
<solid android:color="@color/colorAccent">
因为它给出了十六进制颜色值。
奇怪的是,我将它应用于工具栏,它也适用于棒棒糖。只有它在 fab 选择器文件上给出异常。
我不明白我该如何克服这个问题?
工厂选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="oval">
<solid android:color="?attr/colorAccent" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="oval">
<solid android:color="?attr/colorAccent" />
</shape>
</item>
<item>
<shape android:shape="oval">
<solid android:color="?attr/colorAccent" />
</shape>
</item>
</selector>
日志:
2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 致命 例外:主要 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: java.lang.RuntimeException: 无法启动活动 组件信息{com.example.siddhi.timetablelayout/com.example.siddhi.timetablelayout.MainActivity}: android.view.InflateException:二进制 XML 文件第 16 行:错误 膨胀类 ImageButton 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:130) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 android.os.Looper.loop(Looper.java:137) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 java.lang.reflect.Method.invokeNative(Native 方法) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 由: android.view.InflateException: Binary XML 文件第 16 行:膨胀类 ImageButton 时出错 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.parseInclude(LayoutInflater.java:830) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:736) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.example.siddhi.timetablelayout.MainFragment.onCreateView(MainFragment.java:33) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.Activity.performStart(Activity.java:5018) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:130) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 android.os.Looper.loop(Looper.java:137) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 java.lang.reflect.Method.invokeNative(Native 方法) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 dalvik.system.NativeStart.main(Native 方法) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 原因: android.content.res.Resources$NotFoundException:文件 res/drawable/fab_selector.xml 来自可绘制资源 ID #0x7f020081 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.content.res.Resources.loadDrawable(Resources.java:1918) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 android.view.View.(View.java:3336) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.widget.ImageView.(ImageView.java:114) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.widget.ImageButton.(ImageButton.java:87) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v7.widget.AppCompatImageButton.(AppCompatImageButton.java:59) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v7.widget.AppCompatImageButton.(AppCompatImageButton.java:55) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:107) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:938) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:992) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:171) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:675) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.parseInclude(LayoutInflater.java:830) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:736) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.example.siddhi.timetablelayout.MainFragment.onCreateView(MainFragment.java:33) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:330) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.Activity.performStart(Activity.java:5018) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:130) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 android.os.Looper.loop(Looper.java:137) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 java.lang.reflect.Method.invokeNative(Native 方法) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 在 dalvik.system.NativeStart.main(Native 方法) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: 引起: java.lang.UnsupportedOperationException: 无法转换为颜色:type=0x2 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.content.res.TypedArray.getColor(TypedArray.java:326) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:951) 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881)
编辑:我在 style.xml 中提到了 colorAccent
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textColorSecondary">@color/white</item>
<item name="windowActionBarOverlay">false</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@color/background_material_light</item>
</style>
怎么办?谢谢。。
【问题讨论】:
标签: android xml binary android-5.0-lollipop attr