2016-06-06 2 views
0

의 drawable ID 가져 오기 .setBackgroundResource는 int가 아닌 문자열 만 허용 할 수 있지만 fabrik의 모든 '레벨 업'에 대해 너무 뚱뚱하고 추악하지 않으면 훨씬 더 멋지게 보입니다. 방법이 있나요이 간소화 :동적으로 생성 된 리소스 이름/문자열

datafab1 = getSharedPreferences("datafab1", MODE_PRIVATE); 

if (datafab1.getInt("Level", 1) == 3) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl3); 
     } 
     if (datafab1.getInt("Level", 1) == 4) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl4); 
     } 
     if (datafab1.getInt("Level", 1) == 5) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl5); 
     } 
     if (datafab1.getInt("Level", 1) == 6) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl6); 
     } 
     if (datafab1.getInt("Level", 1) == 7) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl7); 
     } 
     if (datafab1.getInt("Level", 1) == 8) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl8); 
     } 
     if (datafab1.getInt("Level", 1) == 9) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl9); 
     } 
     if (datafab1.getInt("Level", 1) == 10) { 
      Fabrik1.setBackgroundResource(R.drawable.fablvl10); 
     } 

이 같은 뭔가 :

datafab1 = getSharedPreferences("datafab1", MODE_PRIVATE); 

String fablvl1nr = "R.drawable.fablvl"+Integer.toString(datafab1.getInt("Level", 1)); 
    Fabrik1.setBackgroundResource(fablvl1nr); 

답변

2

을 찾는 방법은 자원 클래스의 getIdentifier입니다 :

int i = datafab1.getInt("Level", 1); 
int id= getResources().getIdentifier("fablvl"+i, "drawable", getPackageName()); 
+0

나는 초 감사 –

+1

작품을 시도 할 것이다. 고맙습니다 –

1

사용이 :

int resourceID = getResources().getIdentifier("fablvl"+datafab1.getInt("Level", 1), "drawable", getPackageName()); 
관련 문제