AndroidStudio仍然认为drawable的id被丢失的资源占用

AndroidStudio仍然认为drawable的id被丢失的资源占用,android,nullpointerexception,android-drawable,android-resources,Android,Nullpointerexception,Android Drawable,Android Resources,我正在测试一个Android应用程序,它具有项目列表->项目详细信息活动片段结构 我得到这样的错误: java.lang.NullPointerException at android.text.style.DynamicDrawableSpan.getSize(DynamicDrawableSpan.java:81) at android.text.MeasuredText.addStyleRun(MeasuredText.java:207) at android.text.StaticLay

我正在测试一个Android应用程序,它具有项目列表->项目详细信息活动片段结构

我得到这样的错误:

java.lang.NullPointerException
at android.text.style.DynamicDrawableSpan.getSize(DynamicDrawableSpan.java:81)
at android.text.MeasuredText.addStyleRun(MeasuredText.java:207)
at android.text.StaticLayout.generate(StaticLayout.java:281)
at android.text.DynamicLayout.reflow(DynamicLayout.java:284)
at android.text.DynamicLayout.<init>(DynamicLayout.java:170)
at android.widget.TextView.makeSingleLayout(TextView.java:6134)
at android.widget.TextView.makeNewLayout(TextView.java:6032)
at android.widget.TextView.onMeasure(TextView.java:6389)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16497)
at androidx.core.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1502)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at androidx.core.widget.NestedScrollView.onMeasure(NestedScrollView.java:556)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:733)
at com.google.android.material.appbar.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:95)
at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1556)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:803)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16497)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291)
at android.view.View.measure(View.java:16497)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1352)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(Activi
通过新的矢量资源自动导入,从svg文件创建了可绘制文件

在以这种方式正确导入之前,我错误地在选择器元素中创建了一个带有svg元素的资源。元素的id位于选择器上(适当的\u id)

在使用vector asset导入之后,我没有意识到编译器仍然可以识别id,尽管它尚未分配给新资源

所以它给出了上面的空指针错误

现在id位于vector元素上,它是合法的元素(它内部有一个路径,确实可以复制svg的轮廓),除非id位于path元素上

我清理了项目并创建了它,但是资源仍然没有更新,我认为它正在尝试加载旧的缺少的资源。我可以看到,项目中没有与旧的错误资源对应的文件


现在我必须做什么?

使缓存无效并重新启动,而不是重建

尝试文件->使缓存无效并重新启动restart@Joe我执行了您建议的操作,但跨度仍然为空。当您尝试直接加载可绘图文件时发生了什么;i、 例如,
getDrawable(R.drawable.property_id)
?我刚刚再次检查了
ImageSpan
的源代码,似乎我记错了。它实际上吞噬了一切,不仅仅是
Resources$NotFoundException
,所以它可能是其他东西。@Mike M。我还将合适的\u id更改为新的\u id并重命名(重构)资源,但我得到了相同的错误。请问,我必须对哪个对象调用getDrawable()方法?(从资源创建新图像span后,span为空)您可以在创建该
ImageSpan的同一位置执行
activity.getDrawable(R.drawable.property_id)
span = new ImageSpan(activity, R.drawable.suitable_id);