Android .getDrawable()出错

时间:2015-02-19 02:46:54

标签: java android xml

我试图获取对给定imageView的设置可绘制图像的引用,然后在单击该imageView时打印出一个toast。但是,toast打印出以下消息: " android.graphics.drawable.BitmapDrawable@6ed7c4"

我希望将读数注册为" black_knight",这是drawables文件夹中drawable(black_knight.png)的名称。

这是Java:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.board);

        final ImageView s01 = (ImageView) findViewById(R.id.s01);
        s01.setClickable(true);
        s01.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    if (s01.getDrawable() != (null)) {
                        String Piece3 = s01.getDrawable().toString();
                        Toast.makeText(getBaseContext(), Piece3, Toast.LENGTH_LONG).show();
                        }


                    }
                });
            }

和XML:

<ImageView
            android:id="@+id/s01"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:background="#AF9B60"
            android:layout_weight="1"
            android:src="@drawable/black_knight"
        />

提前致谢。

2 个答案:

答案 0 :(得分:0)

我认为除非您将图像名称与图像一起存储,否则有任何直接的方式来获取可绘制图像的名称。

在XML中,您可以执行以下操作将图像名称设置为imageview的附加数据

android:tag="abc.png"

程序设置imagename

ImageView img = (ImageView) findViewByID(R.id.img)// my image img.settag("abc.png"); // to set an image name

您可以使用getTag()

获取图像名称
String imageName = (String)img.getTag();

答案 1 :(得分:0)

这里:

  

String Piece3 = s01.getDrawable()。toString();

在Drawable上调用toString()方法将返回drawable而不是drawable名称的字符串表示形式。

在xml中使用setTag方法添加图片名称,在代码中使用getTag来检索名称:

 <ImageView
    android:id="@+id/s01"
    ....
    android:tag="black_knight"
    android:src="@drawable/black_knight"
/>

在代码中使用getTag()获取图片名称:

String Piece3 = s01.getTag().toString();