2011-06-14 15 views
6

में एप्लिकेशन संसाधनों (आर। स्ट्रिंग ...) को संदर्भित करने का एक समझदार तरीका है क्या मेरे एंड्रॉइड कक्षाओं में स्थिर इनटाइलाइज़र कोड से एप्लिकेशन संसाधनों का संदर्भ देने के लिए एक समझदार, साफ तरीका है।क्या स्थिर प्रारंभिक

मैं विशेष रूप से एक enum परिभाषित करना चाहता हूं जिसमें इसके स्थिरांक में कुछ संसाधन तारों के मूल्य शामिल हैं।

यहाँ enum

private enum MyEnum { 
    Const1(getString(R.string.string1)), 
    Const2(getString(R.string.string2)), 
    Const3(getString(R.string.string3)); 

    private String strVal; 

    MyEnum(String strVal){ 
     this.strVal = strVal; 
    } 
} 

यह सवाल स्थिर आरंभीकरण के किसी भी प्रकार के लिए लागू होता लिए कुछ छद्म कोड है।

+0

की तरह इसे का उपयोग मैं विचार है कि केवल सुरुचिपूर्ण समाधान बस स्ट्रिंग संसाधनों का सांख्यिक ID संगृहीत और enum की ग्राहक है दौर आ रहा हूँ लुकअप करो या स्ट्रिंग मान के लिए गेटर है जो एक संदर्भ लेता है और लुकअप करता है। कोई अन्य सुझाव? – fleetway76

उत्तर

11

मुझे नहीं लगता कि संसाधनों को लोड करने के लिए संदर्भ की आवश्यकता है क्योंकि प्रत्यक्ष तरीका है। हालांकि, एक बार संदर्भ उपलब्ध होने के बाद आवश्यक स्ट्रिंग प्राप्त करने के लिए आप अपने एनम में एक विधि प्रदान कर सकते हैं। जैसे

private enum MyEnum { 
    Const1(R.string.string1), 
    Const2(R.string.string2), 
    Const3(R.string.string3); 

    private int resId; 

    MyEnum(int resId){ 
     this.resId = resId; 
    } 

    public String resource(Context ctx) { 
     return ctx.getString(resId); 
    } 
} 

कुछ तो तुम

String val = Const3.resource(context); 
+0

मुझे यह जवाब बहुत पसंद है। – clocksmith

+0

मैंने एनोटेशन का उपयोग करके इस दृष्टिकोण को बढ़ाया, अब 'int' फ़ील्ड बनाने और' संदर्भ 'पास करने की आवश्यकता नहीं है http://stackoverflow.com/a/29625457/1891118 –

संबंधित मुद्दे