2017-05-03 56 views
0

我有一個stringDef /類的TypeDef如下使用國土資源字符串值/機器人的TypeDef

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的值,而不是手動輸入。

有什麼辦法可以實現這個用例。

在此先感謝.........

回答

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}) 它只接受常數,但通過使用資源的價值不能不變,有沒有可能克服這一點? – 0x52616A657368

+0

只是讀了一下,結果你不能那麼抱歉。但爲什麼你想這樣做,也許還有另一種解決方案? –