Splash screen error: android.content.res.Resources$NotFoundException: Drawable
Splash screen error: android.content.res.Resources$NotFoundException: Drawable
我正在尝试通过以下方式为我的 android 应用实现启动画面
this article。我一步一步地跟着它,但是每当我尝试 运行 应用程序时,它立即崩溃并且我在我的 logcat:
中收到以下错误
2019-01-05 10:46:33.682 2265-2265/com.example.khoi.parkingapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.khoi.parkingapp, PID: 2265
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.khoi.parkingapp/com.example.khoi.parkingapp.SplashActivity}: android.content.res.Resources$NotFoundException: Drawable com.example.khoi.parkingapp:drawable/splash_background with resource ID #0x7f07008d
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: android.content.res.Resources$NotFoundException: Drawable com.example.khoi.parkingapp:drawable/splash_background with resource ID #0x7f07008d
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/splash_background.xml from drawable resource ID #0x7f07008d
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:837)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:659)
at android.content.res.Resources.getDrawableForDensity(Resources.java:891)
at android.content.res.Resources.getDrawable(Resources.java:833)
at android.content.Context.getDrawable(Context.java:605)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:463)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:203)
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
at android.support.v7.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:260)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:182)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
at com.example.khoi.parkingapp.SplashActivity.onCreate(SplashActivity.kt:10)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #8: <bitmap> requires a valid 'src' attribute
at android.graphics.drawable.BitmapDrawable.updateStateFromTypedArray(BitmapDrawable.java:823)
at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:754)
at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1311)
at android.graphics.drawable.LayerDrawable.inflateLayers(LayerDrawable.java:284)
at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:194)
at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
2019-01-05 10:46:33.682 2265-2265/com.example.khoi.parkingapp E/AndroidRuntime: at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1281)
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:824)
... 24 more
这是我的splash_background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/colorPrimary"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
任何帮助将不胜感激
如果你在这里查看这一行:
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #8: requires a valid 'src' attribute
问题似乎是您布局中的可绘制资源无效。
感谢 Alexander 缩小了错误范围,我发现这个 post 完全解决了我的问题:
我将 splash_background.xml 修改为:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/colorPrimary"/>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_launcher"/>
</item>
</layer-list>
显然,您需要的 src
需要在 drawable
文件夹中,并且它是 .png 而不是 .xml
就我而言,此解决方案并未解决问题。为了修复它,我声明了启动画面的背景图像,如下所示:
<item android:drawable="@color/colorPrimary" />
<item
android:drawable="@drawable/ic_launcher"
android:gravity="center" />
现在很多人都在使用带有多个图像的 mipmaps - 如果你想使用矢量资产然后用这个替换你的项目标签(在 'background_splash.xml' 中有位图的标签或任何命名的标签):
<item
android:height="48dp"
android:width="48dp"
android:drawable="@mipmap/ic_launcher"
android:gravity="center" />
请注意,height/width 是我自己的,可以替换。此外,这仅适用于 API 级别 23 及以上。如果使用较低的,你可以这样做:
<item
android:top="48dp"
android:bottom="48dp"
android:left="48dp"
android:right="48dp"
android:drawable="@mipmap/ic_launcher"
android:gravity="center" />
我正在尝试通过以下方式为我的 android 应用实现启动画面 this article。我一步一步地跟着它,但是每当我尝试 运行 应用程序时,它立即崩溃并且我在我的 logcat:
中收到以下错误2019-01-05 10:46:33.682 2265-2265/com.example.khoi.parkingapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.khoi.parkingapp, PID: 2265
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.khoi.parkingapp/com.example.khoi.parkingapp.SplashActivity}: android.content.res.Resources$NotFoundException: Drawable com.example.khoi.parkingapp:drawable/splash_background with resource ID #0x7f07008d
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2955)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: android.content.res.Resources$NotFoundException: Drawable com.example.khoi.parkingapp:drawable/splash_background with resource ID #0x7f07008d
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/splash_background.xml from drawable resource ID #0x7f07008d
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:837)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:659)
at android.content.res.Resources.getDrawableForDensity(Resources.java:891)
at android.content.res.Resources.getDrawable(Resources.java:833)
at android.content.Context.getDrawable(Context.java:605)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:463)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:203)
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
at android.support.v7.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:260)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:182)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
at com.example.khoi.parkingapp.SplashActivity.onCreate(SplashActivity.kt:10)
at android.app.Activity.performCreate(Activity.java:7183)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2908)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #8: <bitmap> requires a valid 'src' attribute
at android.graphics.drawable.BitmapDrawable.updateStateFromTypedArray(BitmapDrawable.java:823)
at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:754)
at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1311)
at android.graphics.drawable.LayerDrawable.inflateLayers(LayerDrawable.java:284)
at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:194)
at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
2019-01-05 10:46:33.682 2265-2265/com.example.khoi.parkingapp E/AndroidRuntime: at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1281)
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:824)
... 24 more
这是我的splash_background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/colorPrimary"/>
<item>
<bitmap
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
任何帮助将不胜感激
如果你在这里查看这一行:
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #8: requires a valid 'src' attribute
问题似乎是您布局中的可绘制资源无效。
感谢 Alexander 缩小了错误范围,我发现这个 post 完全解决了我的问题:
我将 splash_background.xml 修改为:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/colorPrimary"/>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_launcher"/>
</item>
</layer-list>
显然,您需要的 src
需要在 drawable
文件夹中,并且它是 .png 而不是 .xml
就我而言,此解决方案并未解决问题。为了修复它,我声明了启动画面的背景图像,如下所示:
<item android:drawable="@color/colorPrimary" />
<item
android:drawable="@drawable/ic_launcher"
android:gravity="center" />
现在很多人都在使用带有多个图像的 mipmaps - 如果你想使用矢量资产然后用这个替换你的项目标签(在 'background_splash.xml' 中有位图的标签或任何命名的标签):
<item
android:height="48dp"
android:width="48dp"
android:drawable="@mipmap/ic_launcher"
android:gravity="center" />
请注意,height/width 是我自己的,可以替换。此外,这仅适用于 API 级别 23 及以上。如果使用较低的,你可以这样做:
<item
android:top="48dp"
android:bottom="48dp"
android:left="48dp"
android:right="48dp"
android:drawable="@mipmap/ic_launcher"
android:gravity="center" />