这是我的问题……
在我的活动中,我有一个ImageView和一个Button。我希望按钮仅在ImageView显示某个可绘制内容时执行操作。是的,这意味着ImageView在不同的可绘制代码之间进行动画,这样它就不会中断我想要做的事情。
ImageView imgview = (ImageView)findViewById(R.id.imgviewsid);
Resources res = getResources();
Drawable acertaindrawable = res.getDrawable(R.drawable.thecertaindrawable);
Drawable variabledrawable = imgview.getDrawable();
if (variabledrawable == acertaindrawable)
{
//does something
}它没有起作用。我已经将其范围缩小到"if (variabledrawable == acertaindrawable)“行的错误。虽然Eclipse不会明目张胆地报告Android无法识别的错误(如果两个可绘制文件相同),但我已经测试了代码的其他部分,看起来一切正常。
发布于 2010-12-12 18:02:02
正如Itsik所解释的,即使两个变量都包含对“看起来”相同的对象的引用,它们也是两个不同的对象实例。
==运算符比较引用。只有当两个变量引用同一个对象实例时,它才返回true。相同的内存空间。
Drawable和BitmapDrawable都没有实现特定的.equals()方法,该方法本来可以用来检查两个实例是否包含相同的数据,因此Mathias Lin提示尝试.equals()将不起作用。
遵循Itsik的建议,无需扩展Drawable,您可以使用View.setTag()和View.getTag()方法。这些方法允许将您选择的任何对象附加到视图,并在以后检索它。通过在每次更改ImageView的内容时附加一个简单的标识符(无论是技术上的整数标识符还是定义位图来源的url ),您将能够轻松地识别它。
发布于 2012-06-03 20:51:42
我知道现在发布这篇文章已经很晚了,但这对任何人来说都是有用的。
我使用了.getConstantState()来比较我的两个绘制器,它就像一个护身符:)
发布于 2010-12-12 15:44:30
试试if (acertaindrawable.equals(variabledrawable)) ...
https://stackoverflow.com/questions/4420727
复制相似问题