2016-08-10 115 views
0

此刻,我設置了谷歌地圖標記圖像在Android這樣的:設置變量R.drawable

.icon(BitmapDescriptorFactory.fromResource(R.drawable.mon1)) 

哪裏mon1是對應於圖像的名稱繪製文件夾,名爲mon1.png

我怎樣才能做到這一點是這樣的:

String imagename="blablaimage"; 

.icon(BitmapDescriptorFactory.fromResource(R.drawable.imagename)) 
+0

你爲什麼要這樣做?如果drawables在你的項目中,你就知道資源標識符....你能解釋一下理解的理由嗎? – Opiatefuchs

+0

根據當前位置,我有多個標記。應該使用的圖像的名稱存儲在數據庫中。這就是爲什麼我需要一個「動態」圖像。 – AndreasK

回答

1

這是不可能做你的建議。

相反,一個可能的解決方法可能是使用了以下功能:

public int getDrawableId(String name){ 
     try { 
      Field fld = R.drawable.class.getField(name); 
      return fld.getInt(null); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return -1; 
    } 

和使用,如:

String imagename="blablaimage"; 

.icon(BitmapDescriptorFactory.fromResource(getDrawableId(imagename))); 
+0

如何實現這個? – AndreasK

+0

@AndreasK回答已更新 – Lino

1

如果你點擊了R.drawable.mon1,你會發現在R.java類的名稱MON1聲明一個int。一切都駐留在R類基本上是一個整數。也就是說,你不能將變量imagename聲明爲字符串開頭。它必須是int。

R.java類中生成的所有東西都是由Android本身自動生成的。一旦你把一些資源放在合適的目錄中,R.java會在內部生成相應的資源int,以便可以從Java-end調用它。

底線,如果你有一個名爲blablaimage圖像中繪製你的地方,你可以(最好)做到這一點,

int imagename= R.drawable.blablaimage; 

.icon(BitmapDescriptorFactory.fromResource(imagename)) 
1

另一種可能使用Resources.getIdentifier

.icon(BitmapDescriptorFactory.fromResource(
    context.getResources().getIdentifier(imagename, "drawable", "com.mypackage.myapp"); 
));