2017-05-03 3 views
0

사용 RESOURSE 문자열 값

public class Codes { 
     public static final String Code_1 = "Code1"; 
     public static final String Code_2 = "Code2"; 
     public static final String Code_3 = "Code3"; 


     @Retention(RetentionPolicy.SOURCE) @StringDef({ 
      Code_1, Code_2, Code_3 }) 

     public @interface CodesMessageDef { 
     } 
} 

내가 R.String.code_1에서 Code_1,2,3의 값을 설정하려는보다는 수동으로 입력을 다음과 같이 나는 stringDef/형식 정의 클래스가 .

이 유스 케이스를 달성 할 수있는 방법이 있습니까? 사전에

감사합니다 .........

답변

1

당신은 정적 메서드에서 애플리케이션 컨텍스트를 얻는 방법에 대한 this answer를 읽을 수 있습니다. 응용 프로그램 컨텍스트를 사용 중이므로 컨텍스트를 가져 오는 데이 메서드를 사용하면 메모리 누수가 발생하지 않습니다.

지금 당신은 할 수 있습니다 :

public static final String Code_1 = MyApplication.getAppContext().getString(R.id.code1); 
public static final String Code_2 = MyApplication.getAppContext().getString(R.id.code2); 
public static final String Code_3 = MyApplication.getAppContext().getString(R.id.code3); 

나는 그것이 작동합니다 같아요.

+0

감사 니콜라스 .. – 0x52616A657368

+0

사실 난 컨텍스트를 얻을 수 있어요하지만 문제는 @Retention (RetentionPolicy.SOURCE) @StringDef ({ Code_1, Code_2, Code_3}) 은 상수를 받아 그것을이지만, resouces를 사용함으로써 값은 상수가 될 수 없다. 이것을 극복 할 가능성이 있는가 ?? – 0x52616A657368

+0

그냥 조금 읽어서 미안해 할 수는 없다. 그런데 왜 다른 솔루션이 있을지 알고 싶습니까? –