2013-11-01 182 views
-1

這是一個如何在Android的Java問題 - 日食 我有一個String [R 備案,我defind他那個樣子:字符串值的變量

String r="pic"+c1; 

我想利用它的價值,它是「pic6」並將其用作變量名稱。

我該怎麼做?

+2

如果c1是6串接有什麼問題? –

+6

Java中不支持動態變量。 –

回答

2

你不能直接做,但你可以使用HashMap來模擬你所尋找的。

實施例:

String r="pic"+c1; 
HashMap<String,Integer> extendedVars=new HashMap<>(); 
extendedVars.put(r,10); 
+1

對不起,我不知道HashMap是什麼... 我有這樣的代碼: 'String r =「pic」+ c1; pic6.setImageDrawable(getResources()getDrawable( \t \t \t \t \t \t R.drawable.orange));' 我想提出用r圖像pic6的。 –

+1

@AlonLousky映射將鍵映射到值,因此您可以使用它來模擬動態變量聲明(比如稍後編寫一個解釋器)。你可以說HashMap varMap = new HashMap <>(); varMap.put(「pic6」,new ...);然後再調用varMap.get(「pic」+ c1).setImageDrawable(.....) – Lan

+1

@AlonLousky考慮到這是一個Android問題(沒有注意到,在我的原始答案),你可能想看看http ://stackoverflow.com/questions/10137692/how-to-get-resource-name-from-resource-id&http://stackoverflow.com/questions/3476430/how-to-get-a-resource-id -with-a-known-ressource-name/3476470#3476470 – Lan

2

像主機。 Fouad說。 Java中不支持動態變量。
同樣的問題可以發現Here

1

在java中,必須知道變量名在編譯時。沒有辦法做你想做的事情。

5

如果要從Android應用程序的可繪製文件夾中選擇名爲「pic6.png」的圖像,可以嘗試以下代碼。

String r = "pic" + c1; 

int resId = getResources().getIdentifier(r, "drawable", getPackageName()); 
if (resId != 0) { 
    imageView.setImageResource(resId); 
} else { 
    // This is used in case no image resource is found 
    imageView.setImageResource(R.drawable.unknown); 
} 

請參閱:如果您使用的其他部分,那麼你就需要「unknown.png」圖像添加到Android項目的繪製文件夾。

希望這會有所幫助。