这让我发疯。我只是制作了一些简单的 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/