无法显示位图图像

时间:2014-06-17 02:44:41

标签: android bitmap imageview

我想从drawable resources文件夹中显示位图图像。当我单击一个对象时,我希望能够显示与该视图对应的图像。这是我的代码和XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black" >

<TextView
    android:id="@+id/pokemon_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textColor = "@color/white"
    android:layout_marginTop = "6dp"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<ImageView
    android:id="@+id/pokemon_image"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_below="@+id/pokemon_name"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="44dp"
    android:contentDescription="@string/cd" />

<ListView
    android:id="@+id/listView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/pokemon_image"
    android:layout_centerHorizontal="true" >

</ListView>
</RelativeLayout>

所以问题是我通过使用Bitmap创建的图像不会显示出来。我让它遍历我的Drawable Resources文件夹,其中png文件的名称应该等于我单击的对象的名称。在我的日志语句中,它似乎通过了if检查,但是当我尝试运行它时它并没有形成我的图像。

image = (ImageView) findViewById(R.id.pokemon_image);

    Field[] fields = R.drawable.class.getFields();

    int resourceID = -1;

    for(int count=0; count < fields.length; count++)
    {
        Log.i("Drawable Asset: ", fields[count].getName());
        Log.d("tag", "Resource ID is " + resourceID);

        Log.d("check", "Resource ID and name are the same: " + 
                fields[count].getName().equals(name.toLowerCase(Locale.ENGLISH)));

        if(fields[count].getName().equals(name.toLowerCase(Locale.ENGLISH)));
        {
                try {
                    resourceID=fields[count].getInt(fields[count]);
                    bm = BitmapFactory.decodeResource(getResources(), resourceID);

                    image.setImageBitmap(bm);
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }
    }

任何和所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

删除了Oringinal答案,不适用。

新答案:

而不是反思,请使用

Drawable drawable = getResources().getDrawable(getResources()
                  .getIdentifier(name, "drawable", getPackageName()));

其中name是文件的名称,以便显示drawable。

或者使用资源而不是资源,这在您按姓名查找时更适合。