Eclipse / Java-R.string. *의 값은 int를 반환합니까?
나는 고급스럽고 string.xml 파일을 사용하여 예외 메시지와 같은 것에 대한 상수 문자열을 정의한다고 생각했습니다. strings.xml에서 Add를 누르고 "String"옵션 ( 'String Array'아님)을 선택한 다음 이름과 값을 지정했습니다. 이 코드가 작동하지 않는다는 사실에 놀랐습니다.
throw new Exception(R.string.MyExceptionMessage);
R.string.MyExceptionMessage가 실제로 int 유형이기 때문에 실패합니다. R.java에서 해당 유형을 확인할 수 있습니다. 내가 무엇을 놓치고 있습니까?
R
클래스의 모든 것은 참조이므로 int
.
코드가 Android 내에서 실행 중이거나 Android에 액세스 Context
할 수있는 경우 호출 context.getString(R.string.my_exception_message)
하여 실제 String
값 을 얻을 수 있습니다 .
또는 번역 할 필요가 없어서 Android 리소스 .xml 파일에서 엄격하게 정의 할 필요가없는 예외 문자열과 같은 경우에는 문자열을 일종의 StringConstants
인터페이스에 상수로 저장할 수 있습니다 . 이렇게하면에 액세스 할 수없는 유틸리티 클래스 내에서 문자열을 참조 할 수 있습니다 Context
.
"getResources (). getString (id)"메소드를 사용하십시오.
getResources().getString(R.string.title_activity)
그리고 붐, 당신은 당신의 끈을 가지고 있습니다. 해당 문자열을 values 폴더의 string.xml 파일에 저장해야합니다.
크리스가 옳다. 그러나 예외 문자열도 지역화하려면 어떻게해야합니까? 예를 들어 Exception을 throw하고이를 포착하면 사용자에게 예외 메시지를 표시하려고합니다. 나는 그들을 strings.xml에 넣고 싶지만 동시에이 코드를 사용하고 싶지 않습니다.
throw new Exception(context.getString(R.string.my_exception_message))
왜냐하면 예외가 발생하면 원하지 않을 것이고 예외 메시지를 얻기 위해 추가 코드를 사용할 수 없다고 생각하기 때문입니다.
유일한 해결책은 기본 활동 에서이 메시지에 대한 정적 문자열을 선언하고 가능한 한 빨리 (예를 들어 onCreate () 메서드에서) 다음과 같이 초기화하는 것입니다.
private static String my_exception_message;
public onCreate()
{
my_exception_message = context.getString(R.string.my_exception_message);
}
따라서 예외를 throw하면 현지화 된 메시지를 사용할 준비가 된 것입니다. 어떻게 생각하세요? 다른 해결책을 생각할 수 있습니까?
참고 URL : https://stackoverflow.com/questions/1983548/eclipse-java-values-in-r-string-return-int
'developer tip' 카테고리의 다른 글
bower로 특정 분기의 최신 개정 지정 (0) | 2020.11.23 |
---|---|
CocoaPods를 사용할 때 '해당 모듈 없음' (0) | 2020.11.23 |
foreach 루프에서 배열 값 설정 해제 (0) | 2020.11.23 |
iOS 10 버그 : UICollectionView가 존재하지 않는 인덱스 경로가있는 셀에 대한 레이아웃 속성을 받았습니다. (0) | 2020.11.22 |
뒤로 버튼을 누른 조각에서 활동이 비어 있습니다. (0) | 2020.11.22 |