2013-07-08 63 views
0

HI我試圖使用方法圖片瀏覽找到名稱

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

獲得的形象圖,但是我在中期得到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" 
      />.... 
+0

請發佈包含'ImageView'的XML佈局文件。 –

+0

我已更新代碼,請參閱xml – Zubair

+0

s中的值是什麼? – btse

回答

5

的問題是,你正在試圖用id名爲"id"來加載ImageView。但是,XML佈局文件沒有ImageViewandroid:[email protected]+id/id"。這意味着findViewById()找不到您請求的ImageView。指定的id必須與您的XML視圖文件中的完全匹配。

使用getResources().getIdentifier()是完全不必要的。在Java代碼中獲得View對象的典型方法是使用在構建應用程序時從您的XML佈局文件生成的R.id類。在這種情況下,您已在XML佈局文件中定義了一個編號爲imgFirstImageView資源。所以,你可以調用findViewById()這樣的:

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

這假定您以前叫setContentView()加載包含該ImageView資源的XML佈局文件。

+0

之後調用它我知道這種方式,但我創建了一些圖像,我不想使用該方法 – Zubair

+1

@Zubair請參閱我的編輯,以解釋問題的原因。我還建議你編輯你的問題來進一步解釋你想要做什麼。你想根據存儲在'String'中的'id'找到一個'ImageView'嗎?現在,你只是使用'String'文字,它不允許你在XML佈局中加載任何其他圖像。 –

+0

我首先在init()中創建了圖像視圖,使用image1 =(ImageView)findViewById(R.id.imgFirst);並在另一個地方,我想要使用上述方法得到imageView – Zubair