sana bir dizeden bir görüntü kaynağı görüntülemek istediğiniz, doğru anlamak. Bunu, kullanıcının özel bir ListPreference'dan bir görüntü seçebileceği ve MainActivity düzeninde görüntülendiği bir uygulamada yapıyorum. Çizilebilir kaynak kimliği, Paylaşılabilir Kaynak Kimliği (String) örneğiyle eşleşen bir dize olarak SharedPreferences içinde saklanır: "@ drawable/logo_image".
SharedPreferences shared = getSharedPreferences("com.joshuariddle.recoveryworkscounter.settings", MODE_PRIVATE);
String logo_id = (shared.getString("pref_logo",""));
Bu, örn çekilebilir/LOGO_IMAGE @ bir String olarak çekilebilir kaynak döndürür: Birlikte ListPreference değerini çıkarın. Sonra düzeni içine çekilebilir/Resim eklemek için kullandığım:
ImageView iv_logo = (ImageView) findViewById(R.id.imgLogo);
iv_logo.setImageResource(getResources().getIdentifier(logo_id, "drawable", "com.yourpackage"));
Bu bir kimlik (int) döndürür aşağıdaki yöntemle döndürülen int den kullanılarak) (setImageResource ile yeni çekilebilir için ImageView kaynak değişecek com.yourpackage drawable kaynak temsil eden bir dize:
getResources().getIdentifier(logo_id, "drawable", "com.yourpackage")
Ayrıca kimliği olarak almak için bu yöntemi kullanmak vb Düzen arka planı olarak çekilebilir böyle kullanan diğer kaynaklar değiştirmek için bu aynı yöntemi sadece adres kullanabilirsiniz int:
getResources().getIdentifier("Resource Id String", "drawable", "com.yourpackage")
Darn, 26 saniyeden sonra beni yendi :) –
@MohitDeshpande: hahahahahaha her zaman olur. – Cristian
Evet, bu harika çalışıyor. R.etc'in geri döndüğünü unuttum:/Teşekkürler! – blackaardvark