我需要得到resource ID
從string
如何從字符串獲取資源ID中的Andriod
String s = "R.raw.button5";
final MediaPlayer mp2 = MediaPlayer.create(this,Integer.valueOf((s));
我需要得到resource ID
從string
如何從字符串獲取資源ID中的Andriod
String s = "R.raw.button5";
final MediaPlayer mp2 = MediaPlayer.create(this,Integer.valueOf((s));
您可以使用則getIdentifier(....)。如果你有一個ID爲「R.id.button5」的按鈕,那麼這是你的代碼。
int id = getResources().getIdentifier("button5", "id", context.getPackageName());
final MediaPlayer mp2 = MediaPlayer.create(this,id);
你可以從資源名稱的資源ID與getIdentifier():
則getIdentifier
INT則getIdentifier(字符串名稱,
字符串DEFTYPE,
字符串defPackage)返回給定資源名稱的資源標識符。完整的 限定資源名稱格式爲「package:type/entry」。如果在這裏指定defType和defPackage,則第一個 兩個組件(包和類型)是可選的。
注意:不鼓勵使用此功能。 通過標識符而不是按名稱檢索資源要高效得多。
獲取資源的原始ID,您可以使用類似:
Context context = getContext(); // base context or application context
int resId = getResources().getIdentifier("button5", "raw",
context.getPackageName());
// Or
int resId = getResources().getIdentifier("raw/button5", null,
context.getPackageName());
但你要記住,如文檔的說明說,你最好使用預先生成的資源ID,而不是從獲得資源名稱。這是因爲getIdentifier()
需要時間來找到匹配的資源名稱,如下面的代碼(從Resources):
public int getIdentifier(String name, String defType, String defPackage) {
if (name == null) {
throw new NullPointerException("name is null");
}
try {
return Integer.parseInt(name);
} catch (Exception e) {
// Ignore
}
return mAssets.getResourceIdentifier(name, defType, defPackage);
}
另一個原因是,硬編碼的資源名稱與R.raw.button5
是一個維護的噩夢。因爲將來你有可能改變這個名字,那麼你最終會得到一個指向無處的資源名稱。
歡迎來到SO。 **我們在這裏幫助你的代碼**,如果你還沒有嘗試過任何東西,那麼我們幫不了什麼忙。請參考SO的[tour](https://stackoverflow.com/tour)並閱讀[幫助頁面](https://stackoverflow.com/help)以瞭解如何提出問題。 – Syfer