Si je comprends bien, vous voulez afficher une ressource image à partir d'une chaîne de caractères. C'est ce que je fais dans une application où l'utilisateur peut choisir une image dans une ListPreference personnalisée et l'afficher dans le layout de MainActivity. L'ID de la ressource dessinable est stocké dans les SharedPreferences sous la forme d'une chaîne qui correspond à l'ID de la ressource dessinable (String) exemple : "@drawable/logo_image". Je tire la valeur de la ListPreference avec :
SharedPreferences shared = getSharedPreferences("com.joshuariddle.recoveryworkscounter.settings", MODE_PRIVATE);
String logo_id = (shared.getString("pref_logo",""));
Cela renvoie la ressource du dessinateur sous la forme d'une chaîne, c'est-à-dire @drawable/logo_image. Ensuite, pour insérer cette image dans ma mise en page, j'utilise :
ImageView iv_logo = (ImageView) findViewById(R.id.imgLogo);
iv_logo.setImageResource(getResources().getIdentifier(logo_id, "drawable", "com.yourpackage"));
Cela changera la ressource ImageView pour la nouvelle drawable avec setImageResource() en utilisant l'int retourné par la méthode ci-dessous qui retourne un ID (int) à partir d'une chaîne représentant la ressource drawable dans com.yourpackage :
getResources().getIdentifier(logo_id, "drawable", "com.yourpackage")
Vous pouvez également utiliser cette même méthode pour modifier d'autres ressources qui utilisent drawable, comme les arrière-plans de mise en page, etc. Il suffit d'utiliser cette méthode pour obtenir l'ID sous forme d'un int :
getResources().getIdentifier("Resource Id String", "drawable", "com.yourpackage")