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

Android JSON 圖片檔名含副檔名?getIdentifier 需去除副檔名

     編輯:程式設計綜合問答

問題

JSON 回傳 "Image1.png",直接 getResources().getIdentifier(varImage, "drawable", packageName) 回傳 0,找不到資源。

原因

getIdentifier 參數為 資源名稱 (不含副檔名),R 檔案編譯時已移除副檔名。

修正:substring 截取副檔名

String varImage = c.getString(TAG_IMAGE); // "Image1.png"
String resName = varImage.substring(0, varImage.lastIndexOf('.')); // "Image1"
int resId = getResources().getIdentifier(resName, "drawable", getPackageName());
imageView.setImageResource(resId);

更穩健寫法

String resName = varImage;
int dot = varImage.lastIndexOf('.');
if (dot > 0) resName = varImage.substring(0, dot);
int resId = getResources().getIdentifier(resName, "drawable", getPackageName());
if (resId == 0) {
    // 找不到資源:載入預設圖或記錄錯誤
    imageView.setImageResource(R.drawable.placeholder);
}

建議

  • 後端 JSON 應回傳不含副檔名的資源名稱
  • 或改用網路圖片載入框架 (Glide/Picasso) 直接載入 URL,避免打包大量圖片到 APK
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved