Android按标签获取图像源

时间:2016-12-10 04:17:56

标签: java android imageview

我在点击图片时尝试获取图像源。我有一个带{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的行上。我该如何获取图像源或如何修复此错误?

2 个答案:

答案 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);