如果我知道它的名稱(在Android中),如何獲取圖像的資源ID?如果我知道它的名字,我如何獲取圖像的資源ID?
回答
像這樣的東西:
String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
你也可以試試這個:
try {
Class res = R.drawable.class;
Field field = res.getField("drawableName");
int drawableId = field.getInt(null);
}
catch (Exception e) {
Log.e("MyTag", "Failure to get drawable id.", e);
}
我從以下網址複製本的源代碼。基於本頁面所做的測試,它比getIdentifier()快5倍。我還發現它更方便和易於使用。希望它也能幫助你。
這可能會更快,但是如果使用proguard,我發現它可能會讓您陷入麻煩。至少對我而言,這在proguard中不起作用 – 2012-03-13 21:52:01
這個getResources()。getIdentifier與proguard – 2012-03-13 21:52:30
一起使用感謝您的通知:) – VSB 2013-06-28 13:51:29
您可以使用此功能來獲取資源ID:如果你想獲得一個可繪製資源ID
public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException {
try {
return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName);
} catch (Exception e) {
throw new RuntimeException("Error getting Resource ID.", e)
}
}
所以,你可以這樣調用方法:
getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName());
(或片段):
getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName());
對於字符串資源ID,你可以這樣調用:
getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName());
等等
小心:如果無法找到資源ID,則會引發RuntimeException。一定要在生產中恢復正常。
用於公共系統資源我認爲你需要從中刪除'static',否則'getResources()'會不行。 – 2014-05-09 08:48:44
@Richard Le Mesurier,你能解釋一下爲什麼嗎?謝謝。 – 2016-08-26 04:27:33
@ Leo.Han當我發表評論時,「Context」不可用。 Fix要麼刪除'static'並將其移入'Context'(例如'Activity'或'Application');或者替代修正是喬納森在編輯中所做的,即將「上下文」傳遞給該方法。 – 2016-08-26 06:48:36
實施例:
// this will get id for android.R.drawable.ic_dialog_alert
int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android");
另一種方法是參考的文檔android.R.drawable類。
我遇到的另一種情況。
String imageName =「Hello」 然後當它傳入 getIdentifier函數作爲第一個參數時,它將傳遞帶有字符串null終止的名稱並始終返回零。 通過這個 imageName.substring(0,imageName.length() - 1)
- 1. 返回資源ID,如果我知道資源的名稱
- 2. 如何獲取具有已知資源名稱的資源ID?
- 3. 如果我知道DOM元素的ID,如何獲取組件?
- 4. 如果我知道圖片ID,我如何從Facebook獲取單張照片?
- 5. 如何從資源中獲取字符串,如果我只知道運行時哪個資源?
- 6. 如果我知道路徑,如何從MediaStore獲取歌曲ID?
- 7. 沒有獲取我的代碼中的圖像的資源ID
- 8. 如何獲取圖像資源的名稱作爲字符串
- 9. 如何獲取媒體庫的所有資源的縮略圖圖像?我有資源ID(attachment_id)
- 10. 如何獲取DB資源知道DB名稱?
- 11. 如何獲得一個按鈕,如果我知道名稱的id - javascript
- 12. 如何從它的字符串名稱獲取資源的值
- 13. 如何獲取單元格的值,如果我知道的GridView
- 14. 獲取主程序知道資源的位置(圖像,數據...)
- 15. 如果我知道它的字符串名稱,如何爲變量設置值?
- 16. 如果我知道一個對象的類名,如何獲取它並調用它的方法?
- 17. urllib2 - 如果您已經知道IP,則獲取資源
- 18. 如何通過Android中的名稱獲取圖像資源?
- 19. 如何知道是否從位圖圖像視圖或資源
- 20. 如何獲取文本框的id或類如果不知道
- 21. 獲得資源ID#5 printed.dont知道該如何解決
- 22. 如何從圖像路徑獲取資源ID?
- 23. 如何不知道它的名字
- 24. 如何簡化存儲器讀取,如果我知道註冊的名字
- 25. 如何獲取指定名稱的資源的ID?
- 26. 我不知道如何獲取文本
- 27. 如何知道哪些資源在我的Application_Error中拋出HttpException
- 28. PHP - 如果我知道SESSION_ID,如何獲取會話變量
- 29. Swift:如果我知道密鑰,就可以獲取字典值
- 30. Flex:通過它的名字獲取資源(圖片)?
謝謝,這幫助我找到一個解決方案,以解決simliar問題!我將使用getResources()。getIdentifier(name,「id」,getPackageName());'獲取ImageButton的ID(與使用R.id.name一樣)。 – Select0r 2010-07-26 19:19:36
請注意,可繪製名稱不應包含像「.png」這樣的擴展名 – larham1 2011-08-18 18:17:57
此答案應標記爲接受。 – 2012-07-24 11:59:06