Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NinePatchDrawable导致Android Studio 0.3.6中的ClassCastException_Java_Android_Android Studio_Classcastexception_Nine Patch - Fatal编程技术网

Java NinePatchDrawable导致Android Studio 0.3.6中的ClassCastException

Java NinePatchDrawable导致Android Studio 0.3.6中的ClassCastException,java,android,android-studio,classcastexception,nine-patch,Java,Android,Android Studio,Classcastexception,Nine Patch,情况: 在Android Studio 0.3.6 XML布局编辑器中,可在自定义视图中绘制NinePatchDrawable,从而导致java.lang.ClassCastException 发生的错误很简单,但原因并非如此。值得注意的是,错误出现了,而且最初并不存在(几周前) java.lang.ClassCastException:android.graphics.drawable.StateListDrawable无法强制转换为android.graphics.drawable.Nine

情况:

在Android Studio 0.3.6 XML布局编辑器中,可在自定义视图中绘制NinePatchDrawable,从而导致
java.lang.ClassCastException

发生的错误很简单,但原因并非如此。值得注意的是,错误出现了,而且最初并不存在(几周前)

java.lang.ClassCastException:android.graphics.drawable.StateListDrawable无法强制转换为android.graphics.drawable.NinePatchDrawable

代码和资源:

此代码行导致以下问题:

mTestImage=(NinePatchDrawable)mContext.getResources().getDrawable(R.drawable.img_测试)

这是错误日志:

java.lang.ClassCastException: android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.NinePatchDrawable
    at com.swiftdroid.colorbar.ColorBar.init(ColorBar.java:88)
    at com.swiftdroid.colorbar.ColorBar.<init>(ColorBar.java:78)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:367)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:98)
    at com.android.tools.idea.rendering.ProjectCallback.loadView(ProjectCallback.java:157)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:755)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
    at android.view.LayoutInflater_Delegate.parseInclude(LayoutInflater_Delegate.java:154)
    at android.view.LayoutInflater.parseInclude(LayoutInflater.java:782)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:745)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:373)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:399)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:336)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
    at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:542)
    at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:535)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:934)
    at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:535)
    at com.android.tools.idea.rendering.RenderService.render(RenderService.java:577)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7$2.compute(AndroidDesignerEditorPanel.java:501)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7$2.compute(AndroidDesignerEditorPanel.java:494)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:945)
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7.run(AndroidDesignerEditorPanel.java:494)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
    at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:297)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
java.lang.ClassCastException:android.graphics.drawable.StateListDrawable无法强制转换为android.graphics.drawable.NinePatchDrawable
位于com.swiftdroid.colorbar.colorbar.init(colorbar.java:88)
在com.swiftdroid.colorbar.colorbar.(colorbar.java:78)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:367)
位于org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:98)
位于com.android.tools.idea.rendering.ProjectCallback.loadView(ProjectCallback.java:157)
在android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)中
在android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135)中
位于android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:755)
在android.view.LayoutInflater\u Delegate.rInflate(LayoutInflater\u Delegate.java:64)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
在android.view.LayoutInflater_Delegate.parseInclude(LayoutInflater_Delegate.java:154)中
位于android.view.LayoutInflater.parseInclude(LayoutInflater.java:782)
位于android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:745)
在android.view.LayoutInflater\u Delegate.rInflate(LayoutInflater\u Delegate.java:64)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
在android.view.LayoutInflater.inflate(LayoutInflater.java:373)
在com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:399)上
位于com.android.layoutlib.bridge.bridge.createSession(bridge.java:336)
位于com.android.ide.common.rendering.layoutbrary.createSession(layoutbrary.java:332)
位于com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:542)
位于com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:535)
位于com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:934)
位于com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:535)
位于com.android.tools.idea.rendering.RenderService.render(RenderService.java:577)
位于com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7$2.compute(AndroidDesignerEditorPanel.java:501)
在com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7$2.compute上(AndroidDesignerEditorPanel.java:494)
位于com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:945)
在com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7.run(AndroidDesignerEditorPanel.java:494)
在com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
在com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
位于com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
位于com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
位于com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
位于com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
位于com.intellij.util.concurrency.QueueProcessor.runsafe(QueueProcessor.java:238)
在com.intellij.util.Alarm$Request$1.run(Alarm.java:297)上
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
在java.util.concurrent.FutureTask.run(FutureTask.java:166)中
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:724)
这是NinePatchDrawable:

(放大)

(包含实际名称,但问题和资源布局相同)

仍然无法发布图像,直到获得2个以上的代表:(

问题:

有人能复制这个吗?有人有类似的问题吗


当前出现在Android Studio 0.3.6-ADT构建工具19-SDK 22.3-Android 4.4中

显然,您的可绘制文件是一个statelistdrawable。编译器可能丢失在某个地方。在这种情况下,清理/构建周期应该可以解决这个问题。我们是否可以假设
res/drawable
中没有看起来有点奇怪的
img\u test.xml
怎么样-您实际上有一个
img_test.9.png
?当前图像位于库包中,唯一的资源是
img_test.9.png
。此外,这在实际的android应用程序中不是问题,仅在布局编辑器中。清理/重建/重新启动也没有任何效果:(