首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 從資源名稱獲取資源 ID:用 getResources().getIdentifier()

     編輯:程式設計綜合問答

問題

資料庫儲存字串 "R.drawable.logo",嘗試 Integer.parseInt(logo) 拋 NumberFormatException。

原因

R.drawable.logo 是編譯時常數 int (如 0x7f080001),非字串可解析。資料庫存的是字面字串,無法直接轉換。

正確做法:getIdentifier

String resName = "logo"; // 僅存檔名,不含 R.drawable.
int resId = getResources().getIdentifier(resName, "drawable", getPackageName());
button.setBackgroundResource(resId);

資料庫設計建議

  • 儲存 資源名稱 (如 "logo"),而非完整 "R.drawable.logo"
  • 或儲存 資源 ID 整數 (如 2131230721),直接 setBackgroundResource(id)

完整範例

Cursor c = db.rawQuery("SELECT logo_name FROM items", null);
if (c.moveToFirst()) {
    do {
        String name = c.getString(0); // e.g. "logo"
        int id = getResources().getIdentifier(name, "drawable", getPackageName());
        if (id != 0) {
            imageView.setImageResource(id);
        }
    } while (c.moveToNext());
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved