2016-12-10 4 views
1

画像をクリックすると画像ソースを取得しようとしています。私はandroid:tagにURIを設定しました。例:私はこれを行うに私のコードでAndroidで画像ソースを取得

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

getTagメソッドは実際には描画可能なIDを返さないため、xml文字列を整数にキャストすることはできませんが、黒いルーキーを表示することがわかります。これはあなたがチェスのアプリケーションを作っていると思います。チェスのピースは、それ自体「ルック」と呼ばれるオブジェクトでなければなりません。この "Rook"オブジェクトでは、ImageViewを持つことができ、次にこのオブジェクトのImageViewのgetterとsetterを作成できます。その後、ImageViewのを取得するには、単にこれを行うことがあります。

Rook blackRook = new Rook(); 
blackRook.getImageView(); 

ジャストアイデアを、ImageViewのような全作品を表現するために、このような良いアイデア(も実用的1)ではないと見て。最初

あなたは:

更新:あなたは本当にあなたがここに(これはあなたがいけない)やっている方法を続行したい場合は、いくつかの考えの後

、私は「ゲットー」ソリューションを呼ぶものですタグを取得するimageViewオブジェクトを見つけます。

myImage = (ImageView) findViewById(R.id.myImageName); 

次に、XMLではなくIDを設定します。

myImage.setTag(R.drawable.black_rook); 

あなたは、単に行うことができます。

int imageId = (Integer) myImage.getTag(); 
newImage.setImageResource(imageId); 
+0

ありがとうございます、あなたのアドバイスのために私のレイアウトを変更しました。イメージを設定するのが今、うまくいきます。 – syy

3

xmlに設定されたタグは、整数ではなく文字列です。それを1つにキャストすることはできません。

これを整数に変換する方法はありますが、なぜそれをやりたいのですか?これをイメージとして使用するには、android:tagではなくandroid:srcを設定する必要があります。

+0

私はアンドロイドを学び始めたので、私はまだベストプラクティスを考え出すています。私はそれをやっているやり方を変えました。アドバイスをいただきありがとうございます。 – syy

関連する問題