更改可绘制名称后Android中的ClassCastException?
作者:互联网
我正在写一个Android应用程序,并遇到了一个非常奇怪的情况.我有一个动画列表xml文件,我为一个名为’loading.xml’的动画加载图形创建,我将其设置为我的代码中ImageView的背景.它是这样的:
public void startLoading() {
if(!isLoading) {
loading.setBackgroundResource(R.drawable.loading);
loading.post(new Runnable() {
public void run() {
anim = (AnimationDrawable) loading.getBackground();
anim.start();
}
});
flMask.setBackgroundResource(R.drawable.mask_loading);
flMask.setVisibility(View.VISIBLE);
flMask.bringToFront();
isLoading = true;
}
}
这非常有效,没有任何问题.但是,如果我将’loading.xml’重命名为’anim_loading.xml'(为了使其与我通常的命名方案保持一致),我会得到一个强制关闭
java.lang.ClassCastException:android.graphics.drawable.ColorDrawable
在哪里
anim =(AnimationDrawable)loading.getBackground();
更改名称后,强制关闭,如果我将其更改回’loading.xml’,它再次正常工作.
我真的很难过这个.我尝试使用正确的名称创建一个全新的文件,各种清理/构建,关闭/重新打开Eclipse,关闭/重新打开AVD,擦除AVD并重新安装新的,我已经尝试将xml文件完全重命名为其他内容,并且没有其他相同名称的资源.到目前为止,除了保留名为’loading.xml’的文件之外没有任何工作,至少它可以工作,但它很烦人.我无法找到任何具有相同类型问题的人,这些问题与SO和互联网一样广泛,通常意味着我在某个地方错过了一些愚蠢的事情.
有没有人有任何想法,为什么它不会改变这个文件上的名称?
解决方法:
在放弃并暂时离开一段时间之后,我只是偶然发现了这个问题的答案!
显然,Android存在某种错误,导致res / drawable目录中的第一个文件被视为ColorDrawable,无论它实际是什么.之前,当我尝试更改文件名时,新名称将其放在目录列表的顶部,这样就可以显示自己的错误.如果没有名称更改,我的drawable目录中的顶部项目恰好是ColorDrawable,所以在我尝试更改该名称之前,我从未注意到这个奇怪的错误.
为了解决这个问题(或者更确切地说,解决这个问题),我在res / drawable目录中创建了一个名为a.xml的空虚拟文件.听起来很奇怪,它修复了一切!
标签:classcastexception,android,xml-drawable 来源: https://codeday.me/bug/20190901/1786907.html