GetImageResource () Android. Это возможно?

Я установил изображение для ImageView используя setImageResource(R.drawable.icon1) .

Теперь мое требование – выяснить, каково изображение, которое задано для ImageView и выполнить некоторую обработку.

подобно

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

Поэтому я хотел бы знать, существует ли метод (AFAIK, это не так), и если он не поддерживает отслеживание ресурсов, которые были установлены для ImageView .

Благодарю. Сана.

Вы предполагаете, что, поскольку вы ввели целое число, вы можете получить целочисленное число, и это не так, как работает setImageResource() . См. ImageView # setImageResource () . Это всего лишь удобный метод для вас: что Android делает за кулисами, ищет ресурс Drawable (в большинстве случаев это BitmapDrawable, но может быть любым типом), а затем применяя этот ресурс к ImageView как к Растровый объект (т. Е. Только данные изображения – он не имеет ни малейшего представления о том, каков его первоначальный «идентификатор ресурса» ранее).

Лучшим решением будет отслеживание последнего идентификатора ресурса, который вы использовали:

 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 и сохранение целого числа в переопределенном 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");