2012-09-06 9 views
5

मैं जो एक Activity या Fragment एक JSON फाइल है, जो निम्नलिखित आम प्रारूप है करने के लिए की वर्तमान स्थिति के निर्यात करने में सक्षम है एक Android ऐप्लिकेशन लिख रहा हूँ:एंड्रॉयड/जावा आम json आयात इंटरफ़ेस

{ 
    "data": { 
    "result": { 
     <content depends on specific class> 
    }, 
    "input": { 
     <content depends on specific class> 
    } 
    }, 
    "identifier": <identifier depends on specific class>, 
    "version": 1 
} 

इसका मतलब है कि Activities/Fragments जिसमें इंटरफ़ेस को कार्यान्वित करने वाली चिह्नित सामग्री में भरने की क्षमता है जिसे मैंने "निर्यात योग्य" कहा है और समग्र निर्यात फ़ंक्शन इंटरफ़ेस में परिभाषित विधियों को कॉल करता है। यह एक कठोर आगे समाधान है जो काफी अच्छी तरह से काम करता है।

अभी तक इतना अच्छा है। अब मैं उलटा दिशा बनाना चाहता हूं। मैं एक फाइल लोड करना चाहता हूं और पहचानकर्ता की सामग्री पर निर्भर Activity/Fragment पर कॉल करना चाहता हूं।

"इनपुट" और "परिणाम" की सामग्री को पढ़ने से Activity/Fragment की विधि से ही किया जाएगा।

दुर्भाग्यवश यह स्पष्ट नहीं है कि इस समस्या को एक सुरुचिपूर्ण तरीके से कैसे हल किया जाए। ऐसा करने का सबसे अच्छा तरीका क्या है? समाधान जितना संभव हो उतना सार होगा ताकि इसे आसानी से बढ़ाया जा सके।

+0

'गतिविधि' स्थिति को सहेजने और पुनर्स्थापित करने के लिए ['SharedPreferences'] (http://developer.android.com/guide/topics/data/data-storage.html#pref) का उपयोग करके क्या रोक रहा है? यह एप्लिकेशन/डिवाइस रीस्टार्ट भी बचाता है। यदि आप केवल अल्पकालिक राज्य (डिवाइस रोटेशन, पृष्ठभूमि) रखना चाहते हैं, तो आप अंतर्निहित ['savedInstanceState' 'बंडल' सिस्टम] का उपयोग कर सकते हैं (http://developer.android.com/training/basics/activity- जीवन चक्र/recreating.html)। –

उत्तर

0

इस पर कई अलग-अलग जवाब हो सकते हैं। Google में जीएसओएन नामक लाइब्रेरी है, जो जावा क्लास से और उसके बाद JSON डेटा को स्वचालित रूप से पढ़ और लिख सकती है। यदि आप लाइब्रेरी का उपयोग नहीं करना चाहते हैं, तो आप जावा प्रतिबिंब का उपयोग कर सकते हैं।

0

JSONObject जेएस = नया JSONObject ("डेटा");

JSONObject jSObject1 = js.getJSONObject ("परिणाम"); JSONObject jSObject2 = js.getJSONObject ("इनपुट"); और इतने पर मैं आशा मैं आपकी समस्या

0

एक समझते हैं-और कुछ सरल समाधान हो सकता है, लेकिन अगर यह आप के लिए पर्याप्त सार नहीं है, Abstract Factory pattern का उपयोग करें।

Activity और Fragment के लिए एक ExportableFactory इंटरफ़ेस है कि एक Exportable बनाने के लिए एक विधि को परिभाषित करता है, और इस इंटरफेस के कार्यान्वयन बनाएँ। फिर Map<String, ExportableFactory> बनाएं जो सही फ़ैक्टरी पर identifier के संभावित मानों को मानचित्र करता है। फिर कहते हैं:

Exportable exportable = factoryMap.get(identifier).createExportable(data); 

इस तरह, आप Exportable का एक तिहाई कार्यान्वयन जोड़ना चाहते हैं, तो आप सिर्फ ExportableFactory की इसी कार्यान्वयन बना सकते हैं और मानचित्र में जोड़ने, बुला समारोह को संशोधित किए बिना करना होगा।

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