getImageResource()Android。 这可能吗?

我已经使用setImageResource(R.drawable.icon1)ImageView设置了一个图像。

现在我的要求是找出为ImageView设置的图像,并做一些处理。

喜欢

 if (imageView.getImageResource() == R.drawable.icon1) { //do some processing else if (imageView.getImageResource() == R.drawable.icon2) { //do somethign else else //display 

所以我想知道是否存在一个方法(AFAIK,它不),如果它不如何保持一个ImageView资源已经设置的轨道。

谢谢。 萨纳。

Solutions Collecting From Web of "getImageResource()Android。 这可能吗?"

你假设因为你把一个整数,你可以得到一个整数,这不是如何setImageResource()作品。 请参阅ImageView#setImageResource() 。 这只是一个方便的方法:Android在后台正在做的是查找Drawable资源(在大多数情况下,它是一个BitmapDrawable,但可以是任何types),然后将该资源作为位图对象(即,只有图像数据 – 它不知道以前的原始“资源ID”)。

你最好的解决办法是跟踪你使用的最后一个资源ID:

 imageView.setImageResource(R.drawable.image1); this.mLastResourceId = R.drawable.image1; // ... // Later, when checking the resource: if (this.mLastResourceId == R.drawable.image1) { // Do something } 

您应该能够使用标签属性如下:

 imageView.setImageResource(R.drawable.icon1); imageView.setTag(Integer.valueOf(R.drawable.icon1)); // later int drawable = (Integer) imageView.getTag(); switch(drawable) { case R.drawable.icon1: // do_something.... break; case R.drawable.icon2: // do_something.... break; ... } 

另一种方法是,如果可能的话,将ImageView的子类inheritance,并将整数存储在一个重写的setImageResource()中。

 public class MyImageView extends ImageView { int rememberId = -1; @override void setImageResource(int resId){ rememberId = resId; } int getMyResId(){ return rememberId; } } 
 package com.widget; import android.content.Context; import android.util.AttributeSet; import android.widget.ImageButton; /** * custom star type imagebutton that can be obtain the background image resource * id. * * </p> your layout xml resource might be like the following code: <br> * <view class="com.widget.StarButton" <br> * android:id="@+id/starButton" <br> * android:layout_width="wrap_content" <br> * android:layout_height="wrap_content" <br> * android:background="@android:color/background_light" <br> * android:paddingTop="10dp" <br> * android:src="@drawable/star" /> <br> * * @author Jeffen * */ public class StarButton extends ImageButton { private int mLastResourceId = -1; public StarButton(Context context) { super(context); } public StarButton(Context context, AttributeSet attrs) { this(context, attrs, android.R.attr.imageButtonStyle); } public StarButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setFocusable(true); } /** * set image resource and sync image resource id. */ @Override public void setImageResource(int resId) { super.setImageResource(resId); setImageResourceId(resId); } public int getImageResourceId() { return mLastResourceId; } public void setImageResourceId(int resId) { mLastResourceId = resId; } } 

你应该可以使用Bundle并设置你需要的任何属性。

 Intent i = new Intent(); Bundle extras = new Bundle(); i.putExtra("prop", "value");