0

HIは、アプローチを使用して画像ビューを取得しようとしています

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

ImageView問題は、idを という名前でロードしようとしていることです"id"。ただし、XML レイアウト ファイルにはImageViewwith android:id=@+id/id". これは、あなたが要求している がfindViewById()見つからないことを意味します。ImageView指定された は、XML ビュー ファイルの 1 つと正確に一致するid 必要があります。

使用getResources().getIdentifier()は完全に不要です。ViewJava コードでオブジェクトを取得する一般的な方法R.idは、アプリのビルド時に XML レイアウト ファイルから生成されたクラスを使用することです。この場合、XML レイアウト ファイルImageViewで id のリソースを定義していますimgFirstfindViewById()したがって、次のように呼び出すことができます。

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

これは、このリソースsetContentView()を含む XML レイアウト ファイルをロードするために以前に呼び出したことがあることを前提としています。ImageView

于 2013-07-08T21:09:28.107 に答える