2014-07-03 10 views
5

मैं एमवीवीएमक्रॉस का उपयोग कर आईओएस और एंड्रॉइड के लिए एक क्रॉस-प्लेटफार्म ऐप लिख रहा हूं।उचित विन्यास परिवर्तन हैंडलिंग

एंड्रॉइड संस्करण नेस्टेड फ्रैगमेंट्स का उपयोग करता है। उदाहरण के लिए, होम व्यू एक नेविगेशन ड्रॉवर है, इसके विभिन्न नेविगेशन हब व्यू फ्रैगमेंट्स हैं जो अन्य टुकड़ों वाले विभाजित दृश्य हो सकते हैं, और इसके शीर्ष पर, प्रत्येक दृश्य एक संवाद खंड भी दिखा सकता है।

इसके अतिरिक्त, सभी व्यूमोडेल शोव्यूमोडेल() के माध्यम से नहीं दिखाए जाते हैं, उनमें से कुछ का उपयोग प्रॉपर्टी चेंज इवेंट प्रदाताओं जैसे N=32 video में किया गया है।

यह ठीक काम कर रहा है जब तक कोई कॉन्फ़िगरेशन परिवर्तन नहीं होता है (आमतौर पर, डिवाइस को घुमाने)। जब टुकड़े के विचारों को फिर से बनाया जाता है, तो उनके दृश्य मॉडल नहीं होते हैं और शून्य पर सेट होते हैं। यह निम्नलिखित MvvmCross issue #636 में संकेत दिया गया है, जहां स्टुअर्ट ने यह भी उल्लेख किया है कि वह इस परियोजना को कुछ बेहतरीन अभ्यास सलाह के साथ आना चाहते हैं।

मेरा प्रश्न अब इस के लिए सबसे अच्छा अभ्यास क्या है? यदि आप MvvmCross में एंड्रॉइड कॉन्फ़िगरेशन परिवर्तनों का सही ढंग से समर्थन करना चाहते हैं तो आप क्या करते हैं?

मैंने ऊपर दिए गए मुद्दे में उल्लिखित समस्या के आसपास काम करने की कोशिश की है, यानि माता-पिता ViewModels में व्यूमोडेल रजिस्ट्री के कुछ रूपों द्वारा, और इसके उदाहरण स्थिति को सहेजते समय फ्रैगमेंट के व्यूमोडेल को क्रमबद्ध करने की कोशिश करके, सीमित सफलता के साथ । परिणाम सबसे अच्छा हैकिश महसूस किया। समस्या यह बनी हुई है कि एक टुकड़ा नहीं जानता कि एमवीएमएमक्रॉस में अपने व्यू मॉडल को कैसे बनाया जाए। ओह, और डिवाइस रोटेशन पर कॉन्फ़िगरेशन परिवर्तन अक्षम करने से उत्तर के रूप में गिना जाता है। ;-)

उत्तर

0

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

मेरे Android Apps में मैं Dagger निर्भरता इंजेक्शन लाइब्रेरी का उपयोग कर एक View/Fragment/Activity में एक Controller (या MVA शैली Adapter) इंजेक्षन शुरू कर दिया है। Controller वर्ग के उदाहरण को बनाए रखने की इसकी महत्वपूर्ण संपत्ति है, इसलिए घूर्णन/कॉन्फ़िगरेशन पर उसी Controller को फिर से इंजेक्शन दिया गया है।

ऐसा लगता है कि Mvx.Resolve() यह आदर्श रूप से करने में सक्षम होना चाहिए, या आपके पास बुरा समय होगा। यदि यह आपके दृश्य वर्गों के बीच एक मध्यम परत कैश पेश नहीं करता है और Mvx कक्षा मेरे लिए एकमात्र विकल्प लगता है। लेकिन यह मेरा पहला घंटा है या इसलिए ज़मरिन के बारे में पढ़ रहा है, इसलिए मैं निशान से बाहर हो सकता हूं। मैं अब 5 साल के लिए एक एंड्रॉइड देव रहा हूं, हालांकि मैंने सोचा कि मैं अपना 2 पेंस जोड़ूंगा :)

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