其他分享
首页 > 其他分享> > 更改可绘制名称后Android中的ClassCastException?

更改可绘制名称后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