我在点击图片时尝试获取图像源。我有一个带{URI的android:tag
集。例如:
android:tag="@drawable/black_rook"
在我的代码中,我这样做:
int imageId = (Integer) myImage.getTag();
newImage.setImageResource(imageId);
但是,我收到一个错误说:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
这发生在我投射到Integer
的行上。我该如何获取图像源或如何修复此错误?
答案 0 :(得分:3)
xml中设置的标记是字符串,而不是整数。你不能把它当成一个。
有一种方法可以将其转换为整数,但我真的质疑为什么要这样做。如果你想将它作为图像,你应该设置android:src,而不是android:tag。
答案 1 :(得分:2)
你不能将xml String强制转换为Integer,因为getTag
方法实际上并没有返回你想要做的drawable id,但我看到你想要显示一个黑色的车。这让我觉得你正在制作国际象棋应用程序。国际象棋棋子本身应该是一个对象,叫做#34; Rook"。在这个" Rook"对象你可以有一个ImageView,然后为这个对象ImageView制作getter和setter。然后,要获得ImageView,您可以这样做:
Rook blackRook = new Rook();
blackRook.getImageView();
只是一个想法,因为将整个作品表示为ImageView并不是一个好主意(也不是实际的想法)。
更新
经过一番思考,如果你真的希望按照自己的方式行事(你不应该这样做),这就是我所说的“贫民区”#34;溶液:
您首先找到要从中获取标记的imageView对象:
myImage = (ImageView) findViewById(R.id.myImageName);
然后在此处设置Id,而不是在xml中。
myImage.setTag(R.drawable.black_rook);
然后你可以简单地做:
int imageId = (Integer) myImage.getTag();
newImage.setImageResource(imageId);