一些绘图不能被发现

在我添加了更多的矢量绘图之后,我注意到以前的一些绘图并不工作(大约11)。 与其他人一样,我没有任何问题 – 他们正确地显示。 我将Java类中的每个drawable与image.setImageResource(R.drawable.path_to_image); 而且大多数都没有任何问题。 我只有几个这样的问题。 运行一个应用程序,并试图显示这些drawable我得到这样的错误:

 Unable to find resource: 2131099763 android.content.res.Resources$NotFoundException: Drawable com.example.example_app:drawable/f_user_achievements_learning1h with resource ID #0x7f060073 Caused by: android.content.res.Resources$NotFoundException: File res/drawable/f_user_achievements_learning1h.xml from drawable resource ID #0x7f060073 at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:725) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.getDrawable(Resources.java:767) at android.content.Context.getDrawable(Context.java:525) at android.widget.ImageView.resolveUri(ImageView.java:840) at android.widget.ImageView.onMeasure(ImageView.java:982) at android.view.View.measure(View.java:19734) at android.widget.TableRow.measureChildBeforeLayout(TableRow.java:222) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1117) at android.widget.TableRow.onMeasure(TableRow.java:113) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.LinearLayout.forceUniformWidth(LinearLayout.java:1000) at android.widget.LinearLayout.measureVertical(LinearLayout.java:980) at android.widget.TableLayout.measureVertical(TableLayout.java:473) at android.widget.TableLayout.onMeasure(TableLayout.java:436) at android.view.View.measure(View.java:19734) at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1293) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.widget.ScrollView.onMeasure(ScrollView.java:340) at android.view.View.measure(View.java:19734) at android.widget.LinearLayout.measureVertical(LinearLayout.java:911) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19734) at android.widget.RelativeLayout.measureChild(RelativeLayout.java:676) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:479) at android.view.View.measure(View.java:19734) at android.widget.RelativeLayout.measureChild(RelativeLayout.java:676) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:479) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:671) at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:90) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1319) at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:736) at android.view.View.measure(View.java:19734) at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1081) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:687) at android.view.View.measure(View.java:19734) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2271) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1358) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1607) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:619) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.IllegalArgumentException: Path string cannot be empty. at android.util.PathParser.nCreatePathDataFromString(Native Method) at android.util.PathParser.-wrap1(PathParser.java) at android.util.PathParser$PathData.(PathParser.java:74) at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:1556) at android.graphics.drawable.VectorDrawable$VFullPath.inflate(VectorDrawable.java:1507) at android.graphics.drawable.VectorDrawable.inflateChildElements(VectorDrawable.java:693) at android.graphics.drawable.VectorDrawable.inflate(VectorDrawable.java:598) at android.graphics.drawable.DrawableInflater.inflateFromXml(DrawableInflater.java:130) at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1227) at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1200) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:715) ... 74 more 

这是Java类的片段,我在那里链接drawable:

 @Override protected void setChoiceState() { if(achievement.isAchieved()) { image.setAlpha(ITEM_CHOSEN); image.setImageResource(achievement.getResId()); } else { image.setAlpha(ITEM_NOT_CHOSEN); image.setImageResource(R.drawable.f_user_achievements_not_achieved); } } 

其中achievement.getResId()是可绘制的路径。 我也试图改变它像R.drawable.path_to_drawable原路径,但它也没有工作。 但是,符合: image.setImageResource(R.drawable.f_user_achievements_not_achieved); 工作正常。

这里是我的.gradle文件:

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath 'com.google.gms:google-services:3.1.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion '27.0.2' defaultConfig { applicationId "com.example.example_app" vectorDrawables.useSupportLibrary = true minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' } dexOptions { jumboMode true javaMaxHeapSize "2g" } } repositories { maven { url "https://maven.google.com" } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile files('libs/gson-2.8.0.jar') compile files('libs/commons-lang-2.3.jar') compile files('libs/httpclient-4.5.3.jar') compile 'org.apache.httpcomponents:httpcore:4.4.1' compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+' compile 'com.android.support:appcompat-v7:24.1.1' compile 'com.android.support:design:24.1.1' compile 'com.android.support:support-v4:24.1.1' compile 'com.google.android.gms:play-services-ads:11.6.2' compile 'com.google.android.gms:play-services-auth:11.6.2' compile 'com.android.support:multidex:1.0.0' testCompile 'junit:junit:4.12' } apply plugin: 'com.google.gms.google-services' 

如果您需要其他文件,只需写下评论,然后附上

编辑

我添加了两个额外的drawable(矢量资产) – 一个没有工作,另一个没有任何问题。 第一个是不工作,但第二个工作正常,所以可以是只有XML文件表示矢量绘制问题?

这里是一个不工作的矢量绘制的XML文件之一:

               

文件中间有一条空路径数据。 也许这是罪魁祸首(看起来不正确):

  

即使在我的情况下,我发现在5.0之前的一个问题,只有向量绘制,这个解决方法使它为我,并可能为你工作:

 VectorDrawableCompat imageDrawable = VectorDrawableCompat.create(context.getResources(), R.drawable.path_to_image, context.getTheme()); image.setImageDrawable(imageDrawable); 

请注意,代码是从Kotlin转换而来,可能包含拼写错误和小错误。