2016-09-01 3 views
1

R.string을 프로그래밍 방식으로 변경할 수있는 방법이 있습니까? 그것은 오류를 던지고 있기 때문입니다.프로그래밍 방식으로 getString() 프로그래밍 언어 변경

기본적으로 나는이 작업을 수행 할 수 : String parkAdd = getString(R.string.stg_ParkAddress_+id);

내가 따라 ID를 변경 문자열을 하드 코딩했기 때문에.

나는이 일을 시도했지만 작동하지 않습니다
String parkAdd = getString(R.string.stg_ParkAddress_1); 
     parkAdd = parkAdd.replace("1",id); 
     if (!parkAdd.equalsIgnoreCase("")){ 
      tvParkAddress.setText(parkAdd); 
     } 

감사합니다.

+0

프로그래밍 방식으로 자원 값을 변경할 수 없습니다. 기본적으로 런타임에 변경할 수 없습니다. –

+0

@AmanGrover하지만이 문제를 해결하려면 솔루션이 필요합니다. 스위치를 만들어야합니까? – FilipeOS

+0

그러나 런타임에 자원 값을 변경할 수는 없습니다. –

답변

5

R.string.xxx는 실제로 상수이며 값을 추가 할 수 없으면 리소스를 찾을 수 없습니다. 당신이 하드 특정 값에 따라 문자열을 코딩 한 경우

public static final class string { 
    public static final int about_open_source_heading=0x7f060013; 
    public static final int about_open_source_list=0x7f060014; 
} 

, 어쩌면 당신은 같은 것을 할 수 있습니다 :

switch (id) { 
    case 12345: 
     parkAddr = R.string.stg_ParkAddress_12345; 
     break; 
    case 12346: 
     parkAddr = R.string.stg_ParkAddress_12346; 
     break; 
} 
+0

Gary Bak, 왜'public static final class string'에 액세스합니까? – FilipeOS

+0

@ FilipeOS - 이것은'R.java' 파일의 샘플입니다. R.string.stg_ParkAddress_X 상수를 사용할 때 해당 파일/클래스의 final을 참조합니다. –

0

단순히 id

String parkAdd = getString(R.string.stg_ParkAddress) + id; 
+0

아니요 stg_ParkAddress_X가 아닌 내 문자열을 가져올 것이기 때문입니다 – FilipeOS

1

프로그래밍 방식으로 문자열 리소스를 편집 할 다른 클래스를 수행하고 문자열이 런타임에이 클래스 및 액세스에 배치 가질 수 없습니다 그것을 연결할.

2

R.java 앱에 대한 값을 볼 수 있도록 당신은 검색 할 수 있습니다 문자열 리소스는 런타임에 변경할 수 없습니다. SharedPreference에 문자열을 저장하여 나중에 사용하기 위해 수정할 수 있습니다.