난 당신이 문자열에서 이미지 리소스를 표시하려면, 제대로 이해하고. 사용자가 사용자 지정 ListPreference에서 이미지를 선택할 수있는 App에서이 작업을 수행하면 MainActivity 레이아웃에 표시됩니다. 드로어 블 리소스 ID는 드로어 블 리소스 ID (String) 예제 : "@ drawable/logo_image"와 일치하는 문자열로 SharedPreferences에 저장됩니다.
SharedPreferences shared = getSharedPreferences("com.joshuariddle.recoveryworkscounter.settings", MODE_PRIVATE);
String logo_id = (shared.getString("pref_logo",""));
이 즉 드로어 블/사진 LOGO_IMAGE @ 문자열로 드로어 블 리소스를 반환 : 내가 가진 ListPreference의 값을 당깁니다. 그런 다음 내 레이아웃에 그 드로어 블/사진 이미지를 삽입 내가 사용
ImageView iv_logo = (ImageView) findViewById(R.id.imgLogo);
iv_logo.setImageResource(getResources().getIdentifier(logo_id, "drawable", "com.yourpackage"));
이는 ID (int)를 반환하는 아래의 메소드에 의해 반환 INT에서 사용) (setImageResource과 새로운 당김에 이미지 뷰 리소스를 변경됩니다 com.yourpackage에서 드로어 블 리소스를 나타내는 문자열 :
getResources().getIdentifier(logo_id, "drawable", "com.yourpackage")
또한 ID 등을 얻기 위해이 방법을 사용하는 등 레이아웃 배경으로 그릴 수 등을 사용하는 다른 자원을 변경하려면이 같은 방법으로 당신은 단지 한 사용할 수 있습니다 int :
getResources().getIdentifier("Resource Id String", "drawable", "com.yourpackage")
Darn, 26 초 만에 나를 때려주십시오. –
@MohitDeshpande : 하하하하하. – Cristian
네, 훌륭합니다. R.etc이 ints를 반환한다는 사실을 잊어 버렸습니다 :/Thanks! – blackaardvark