第一个异常是类图片按钮的inflateException。 第二个是fab selector的资源未找到异常。Fab selector位于可绘制文件夹中。
它还显示了以下内容:Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
如果我使用,则它可以正常工作。
<solid android:color="@color/colorAccent">
因为它提供了十六进制颜色值。
奇怪的是,我以同样的方式将其应用于工具栏,并且在棒棒糖以下版本也可以使用。只有在fab selector文件上会出现异常。
我不明白如何克服这个问题?
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: FATAL EXCEPTION: main 02-18 05:11:01.161 2800-2800/com.example.siddhi.timetablelayout E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.siddhi.timetablelayout/com.example.siddhi.timetablelayout.MainActivity}: android.view.InflateException: Binary XML file line #16: Error inflating class 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: at 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: at java.lang.reflect.Method.invokeNative(Native Method) 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: Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class 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: at 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: at java.lang.reflect.Method.invokeNative(Native Method) 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: Caused by: android.content.res.Resources$NotFoundException: File res/drawable/fab_selector.xml from drawable resource 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: at 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: at 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: at java.lang.reflect.Method.invokeNative(Native Method) 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: Caused by: java.lang.UnsupportedOperationException: Can't convert to color: 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>
怎么办?谢谢。