Android java.lang.IllegalArgumentException:路径必须是凸的
同样的应用程序在安卓7中工作,但在安卓8中失败 在一个活动中,我正在从Fire base数据库检索数据。当Fire base数据库为空时,则未发生任何错误,当它具有数据时也发生了错误,我搜索了错误,但从未得到任何解决方案 日志:-Android java.lang.IllegalArgumentException:路径必须是凸的,android,android-logcat,illegalargumentexception,Android,Android Logcat,Illegalargumentexception,同样的应用程序在安卓7中工作,但在安卓8中失败 在一个活动中,我正在从Fire base数据库检索数据。当Fire base数据库为空时,则未发生任何错误,当它具有数据时也发生了错误,我搜索了错误,但从未得到任何解决方案 日志:- java.lang.IllegalArgumentException: path must be convex at android.graphics.Outline.setConvexPath(Outline.java:284) at
java.lang.IllegalArgumentException: path must be convex
at android.graphics.Outline.setConvexPath(Outline.java:284)
at android.graphics.drawable.AdaptiveIconDrawable.getOutline(AdaptiveIconDrawable.java:387)
at android.view.ViewOutlineProvider$1.getOutline(ViewOutlineProvider.java:38)
at android.view.View.rebuildOutline(View.java:14960)
at android.view.View.setBackgroundBounds(View.java:19416)
at android.view.View.drawBackground(View.java:19381)
at android.view.View.draw(View.java:19183)
at android.view.View.updateDisplayListIfDirty(View.java:18142)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.updateDisplayListIfDirty(View.java:18133)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.draw(View.java:19195)
at android.view.View.updateDisplayListIfDirty(View.java:18142)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.support.v7.widget.RecyclerView.drawChild(RecyclerView.java:4703)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.draw(View.java:19195)
at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:4107)
at android.view.View.updateDisplayListIfDirty(View.java:18142)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.updateDisplayListIfDirty(View.java:18133)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.updateDisplayListIfDirty(View.java:18133)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.updateDisplayListIfDirty(View.java:18133)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.updateDisplayListIfDirty(View.java:18133)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.updateDisplayListIfDirty(View.java:18133)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.updateDisplayListIfDirty(View.java:18133)
at android.view.View.draw(View.java:18920)
at android.view.ViewGroup.drawChild(ViewGroup.java:4236)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4022)
at android.view.View.draw(View.java:19195)
at com.android.internal.policy.DecorView.draw(DecorView.java:788)
at android.view.View.updateDisplayListIfDirty(View.java:18142)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:675)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2992)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2806)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2359)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
项目_people.xml的代码
查看堆栈跟踪,前几行讲述了一个故事:
java.lang.IllegalArgumentException: path must be convex
at android.graphics.Outline.setConvexPath(Outline.java:284)
at android.graphics.drawable.AdaptiveIconDrawable.getOutline(AdaptiveIconDrawable.java:387)
at android.view.ViewOutlineProvider$1.getOutline(ViewOutlineProvider.java:38)
at android.view.View.rebuildOutline(View.java:14960)
at android.view.View.setBackgroundBounds(View.java:19416)
at android.view.View.drawBackground(View.java:19381)
- 第三行提到
adaptivecondrawable
- 第7行提到了视图。牵引地面()
搜索
adaptivecondrawable
告诉我们这是Android 8的一项新功能:
下一步我们需要找出背景是什么 查看您的
CardView
布局,您正在将启动器图标(在Android 8上,这可能是您的AdaptiveCondrawable
)设置到CircleImageView
背景上
这就是崩溃发生的地方-图标无效,或者以这种方式使用时,CircleImageView
不支持该图标
修复方法是在应用程序中包含一个PNG图标,在这种情况下,该图标将用作背景。如果图标设置正确,请尝试使用
android:src
而不是android:background
为CircleImageView设置图标 同样的应用程序在安卓7中工作,当我在安卓8中尝试时,它失败了@RichardLeMesurier我添加了代码请检查!
java.lang.IllegalArgumentException: path must be convex
at android.graphics.Outline.setConvexPath(Outline.java:284)
at android.graphics.drawable.AdaptiveIconDrawable.getOutline(AdaptiveIconDrawable.java:387)
at android.view.ViewOutlineProvider$1.getOutline(ViewOutlineProvider.java:38)
at android.view.View.rebuildOutline(View.java:14960)
at android.view.View.setBackgroundBounds(View.java:19416)
at android.view.View.drawBackground(View.java:19381)