如果我理解正确,您想从字符串中显示图像资源。我在用户可以从自定义 ListPreference 中选择图像并显示在 MainActivity 布局中的应用程序中执行此操作。可绘制资源 ID 作为与可绘制资源 ID(字符串)匹配的字符串存储在 SharedPreferences 中,例如:“@drawable/logo_image”。我使用以下方法提取 ListPreference 的值:
SharedPreferences shared = getSharedPreferences("com.joshuariddle.recoveryworkscounter.settings", MODE_PRIVATE);
String logo_id = (shared.getString("pref_logo",""));
这会将可绘制资源作为字符串返回,即@drawable/logo_image。然后将该可绘制/图像插入到我使用的布局中:
ImageView iv_logo = (ImageView) findViewById(R.id.imgLogo);
iv_logo.setImageResource(getResources().getIdentifier(logo_id, "drawable", "com.yourpackage"));
这将通过 setImageResource() 使用下面方法返回的 int 将 ImageView 资源更改为新的可绘制资源,该方法从 com.yourpackage 中表示可绘制资源的字符串返回一个 ID (int):
getResources().getIdentifier(logo_id, "drawable", "com.yourpackage")
您也可以使用相同的方法来更改使用可绘制的其他资源,例如布局背景等。您只需使用此方法将 ID 获取为 int:
getResources().getIdentifier("Resource Id String", "drawable", "com.yourpackage")