developer tip

Eclipse / Java-R.string. *의 값은 int를 반환합니까?

copycodes 2020. 11. 23. 08:18
반응형

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

반응형