0

嗨,我正在尝试使用该方法获取图像视图

int mId = getResources().getIdentifier(s, "id",getPackageName());
        ImageView img = (ImageView) findViewById( mId);
        img.setImageResource(kBonusImage);

但我在 mId 中得到 0。

这是我的 xml 布局:-

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="35dp"
    android:shrinkColumns="*"
    android:stretchColumns="*" >

    <TableRow
        android:id="@+id/trFirstRow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/imgFirst"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:background="@drawable/cell_border"
            android:gravity="center"
            />....
4

1 回答 1

5

问题是您正在尝试使用 name加载ImageViewan 。但是,XML 布局文件没有with 。这意味着找不到您正在请求的内容。指定的必须与您的 XML 视图文件中的一个完全匹配。id"id"ImageViewandroid:id=@+id/id"findViewById()ImageViewid

使用getResources().getIdentifier()是完全没有必要的。View在 Java 代码中获取对象的典型方法是R.id在构建应用程序时使用从 XML 布局文件生成的类。在这种情况下,您在 XML 布局文件中定义了一个ImageView具有 id 的资源imgFirst。所以你可以findViewById()这样调用:

ImageView img = (ImageView) findViewById(R.id.imgFirst);

这假定您之前已调用setContentView()加载包含此ImageView资源的 XML 布局文件。

于 2013-07-08T21:09:28.107 回答