2012-11-03 59 views
0

我在一個新的項目使用此代碼成功,但是,在我的實際代碼複製時,顯示的圖像是不好一個 一切都是製作精良(圖片所在的文件夾繪製,每一個數據以及宣佈,...)與「phoXX」,其中XX是一個整數(0和62之間) 圖像開始我有一個ImageView的(命名imageView1)和一個TextView(調試,命名textView1),其中i顯示ID(在R.java檢查時,哪一個是好...)方法setImageDrawable(getResources()。getDrawable(XX))不顯示的良好形象

這裏是我的代碼:

private Context mContext; 
ImageView imageC=(ImageView)findViewById(R.id.imageView1); 
TextView Tex=(TextView)findViewById(R.id.textView1);  
Drawable drawableX = this.getResources().getDrawable(android.R.drawable.ic_dialog_alert); 
Random random_monster = new Random(); 
int lerand = random_monster.nextInt(62); 
int id = mContext.getResources().getIdentifier("drawable/pho"+lerand, "drawable",mContext.getPackageName()); 
if (id>0) 
{ 
    drawableX = getResources().getDrawable(id); 
} 
imageC.setImageDrawable(drawableX); 
Tex.setText(Integer.toString(lerand)+":"+id); 

所以,正如我所說,在顯示圖像時,會顯示一個數字,但對於pho29爲例展示了名爲pho48圖像(如果你問pho48不顯示pho29) ID是2130837535,這是出現在R.java: public static final int pho29 = 0x7f02001f; pho48是:
public static final int pho48 = 0x7f020034;

對於某些數字,顯示的圖像是好的,對於其他圖像不是好的(並且它總是顯示相同數字的相同圖像....我的意思是pho29,它總是pho48其中顯示,在我的活動中的每一個)

我真的不明白我的思念......所有THX對於任何形式的幫助

編輯:下面的一些匹配(左側數應顯示在右邊的數字顯示)

2->6 
17->32 
19->34 
24->41 
43->43 
51->51 
36->55 
37->56 
38->57 
56->56 
59->59 
61->61 

正如你所看到的,56顯示56和37 ....

+0

嘗試'INT ID = this.getResources()則getIdentifier(「繪製/河粉」 + lerand,「繪製」 ,this.getPackageName());'而不是'int id = mContext.getResources()。getIdentifier(「drawable/pho」+ lerand,「drawable」,mContext.getPackageName());' –

+0

已經試過這個:( 但thx總之 – Ronandroid

回答

1

如果圖像資源的相同的代碼,並設置在一個項目中很好地工作,而不是在另一個,你應該考慮在破碎項目編譯資源是否實際上是正確的。我在Eclipse中使用自動構建功能時發現,當我期望它們時資源不會重新編譯。例如,如果我在部署應用程序之前做的最後一件事是更改資源。保存一個代碼文件的變化似乎會讓構建系統變得更難。

你應該嘗試做一個乾淨的,然後重建。在Eclipse中,在項目菜單上選擇「清理...」並選擇您的項目(或讓它清理所有項目)。 Eclipse然後將完成重建。或者在命令行上運行「ant clean」,然後運行「ant debug」。

而且你正在使用這條線:

int id = mContext.getResources().getIdentifier("drawable/pho"+lerand, "drawable",mContext.getPackageName()); 

這裏是API SPEC:

public int getIdentifier (String name, String defType, String defPackage) 

你並不需要指定名稱字段的類型,因爲你指定它在defType字段中。我不認爲這將解決您的問題,但這應該工作至少還有:

int id = mContext.getResources().getIdentifier("pho"+lerand, "drawable",mContext.getPackageName()); 
+0

這是很好的方式!!謝謝!!! 關於「drawable/pho」其實都可以正常工作:p – Ronandroid

+0

丟失了這次發生了多少次我告訴大家現在開始使用eclipse當事情失敗時總是嘗試一次清理/重建。 –

0

試圖把沒有源的imageview放在它的定義中,有時我遇到了問題,當一個imageview的源代碼在xml中設置,改變它的drawable在運行時無法正常工作,第一個圖像總是可見

+0

不,圖像變化很好(它並不總是顯示的第一個圖像)謝謝 – Ronandroid

相關問題