java - ImageView vector 资源在 Nougat 上工作但在 Oreo 上崩溃

标签 java android vector imageview

这让我发疯。我只是制作了一些简单的 svg 图标来替换我的应用程序(在 ImageView 中)中的 png 图标(我已经在另一个 Activity 中做过并且工作正常),突然间,应用程序不断崩溃,并出现以下错误Android 8.0,但在 7.0 上运行良好。所有 xml 文件都位于正确的可绘制文件夹中,所有内容均已检查完毕,但仍然崩溃。我读到,我必须更新 Gradle 文件中的支持库,但如果我这样做,它说我必须更改compileSdkVersion以匹配支持库版本(这将使其与早于 8.0 的 Android 版本不兼容) ,对吗?)

编辑:我刚刚尝试更新支持库,但它仍然崩溃。

编辑 2:三个图标中只有一个导致应用程序崩溃......这变得很奇怪

编辑 3:我将图标更改为其他内容,现在它可以工作了...所以没关系,但我仍然想了解为什么 Android 8 与某些制作的 SVG 图标不兼容与其他图标使用的软件相同。

这是我收到的错误。请暂停。

04-09 14:58:57.377 9954-9954/com.example.mehra.testcalculator E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: com.example.mehra.testcalculator, PID: 9954
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mehra.testcalculator/com.example.mehra.testcalculator.MainActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class ImageView
                                                                                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.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class ImageView
                                                                             Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class ImageView
                                                                             Caused by: android.content.res.Resources$NotFoundException: Drawable com.example.mehra.testcalculator:drawable/ic_cycleicon with resource ID #0x7f08006e
                                                                             Caused by: android.content.res.Resources$NotFoundException: File res/drawable-anydpi-v21/ic_cycleicon.xml from drawable resource ID #0x7f08006e
                                                                                at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:818)
                                                                                at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:650)
                                                                                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:351)
                                                                                at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)
                                                                                at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188)
                                                                                at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
                                                                                at android.support.v7.widget.AppCompatImageHelper.loadFromAttributes(AppCompatImageHelper.java:58)
                                                                                at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:78)
                                                                                at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
                                                                                at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
                                                                                at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024)
                                                                                at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081)
                                                                                at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:866)
                                                                                at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
04-09 14:58:57.382 9954-9954/com.example.mehra.testcalculator E/AndroidRuntime:     at com.example.mehra.testcalculator.Calculator_fragment.onCreateView(Calculator_fragment.java:68)
                                                                                    at android.support.v4.app.Fragment.performCreateView(Fragment.java:2354)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
                                                                                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
                                                                                    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
                                                                                    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
                                                                                    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
                                                                                    at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
                                                                                    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
                                                                                    at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3221)
                                                                                    at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3171)
                                                                                    at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192)
                                                                                    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:560)
                                                                                    at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
                                                                                    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1340)
                                                                                    at android.app.Activity.performStart(Activity.java:7191)
                                                                                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2918)
                                                                                    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: java.lang.IllegalArgumentException: Path string cannot be empty.
                                                                                    at android.util.PathParser.nCreatePathDataFromString(Native Method)
                                                                                    at android.util.PathParser.-wrap1(Unknown Source:0)
                                                                                    at android.util.PathParser$PathData.<init>(PathParser.java:76)
                                                                                    at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:1924)
                                                                                    at android.graphics.drawable.VectorDrawable$VFullPath.inflate(VectorDrawable.java:1875)
                                                                                    at android.graphics.drawable.VectorDrawable.inflateChildElements(VectorDrawable.java:734)
                                                                                    at android.graphics.drawable.VectorDrawable.inflate(VectorDrawable.java:635)
                                                                                    at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:146)
                                                                                    at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1322)
                                                                                    at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1281)
                                                                                    at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:808)
                                                                                        ... 57 more

最佳答案

由以下原因引起:java.lang.IllegalArgumentException:路径字符串不能为空。

也许其中一个图标有一个空路径。旧版本的 Android 可能会忽略它,而 Oreo 则不太宽容。

检查您的图标 XML 并删除所有空路径。

为什么会出现这个错误?空路径没有任何意义。它只占用空间。它一开始就不应该在那里。 Android 很乐意让您知道。

关于java - ImageView vector 资源在 Nougat 上工作但在 Oreo 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49739923/

相关文章:

r - 列表列表中元素的均值

c++ - 按索引删除一堆元素?

java - 在 JavaFX 动画中模拟真实的弹跳

android - 无法确定来自 10.0.1 的 java 版本 react native

android - 上下文操作模式自定义行为

android - 旧的回收 View 在旋转后仍保留为背景

C++ vector 迭代错误

java - 无法将依赖项添加到转换为 maven 的 Spring 项目

java - 我的代码无法正确替换 html 字符串?

java - 如何使用 newAPIHadoopFile 在 spark 中读取 avro 文件?