나는이 Spinner
내에서 Activity
사용자가 선택할 수있는 항목이 "안녕하세요"와 "안녕". 장치가 스페인어 인 경우 이러한 항목은에서 string-es/
대신 문자열이 선택되므로 "hola"및 "adios"가됩니다 string
.
문제는 다음과 같은 코드에 많은 스위치 케이스가 있다는 것입니다.
switch(spinnerSelectedItem){
case "hello":
case "hola":
//do something
break;
case "goodbye":
case "adios":
//do something else
break;
}
문자열 리소스로 초기화 된 최종 문자열을 만들려고했지만 "상 수식 필요"라고 불평합니다.
final String resHello = getResources().getString(R.string.helloText);
final String resGoodbye = getResources().getString(R.string.goodbyeText);
switch(spinnerSelectedItem){
case resHello :
//do something
break;
case resGoodbye :
//do something else
break;
}
이것은 단순화 된 버전입니다. 더 많은 항목과 두 개 이상의 언어가 있습니다.
한 가지 해결책은 값 대신 문자열 id를 사용하거나 switch 대신 if 절을 사용하는 것입니다.하지만 "스마트"또는 "깨끗한"방법을 찾고 싶습니다. 어떤 아이디어가 있습니까?
Resources 의 getIdentifier 메소드를 사용 하여 문자열의 ID를 가져올 수 있습니다 . 예 : getResources().getIdentifier(resValue, "string", getPackageName())
이것은 스위치 문에서 사용하고 비교할 수있는 id를 반환합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다