2012-07-03 18 views
9

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

बहुत से गतिविधियां टैब का उपयोग करती हैं, और एक्शन बार और कुछ अन्य नई सुविधाओं का उपयोग करने के लिए मैं टैब्ड गतिविधियों को एक दर्शक के साथ टैब्ड टुकड़ों में परिवर्तित करने की कोशिश कर रहा हूं, और यही वह जगह है जहां मैं मार रहा हूं कुछ समस्याएँ। जो मैंने पढ़ा है, वह प्रत्येक टैब को एक टुकड़े के रूप में कार्यान्वित करने के लिए पसंदीदा विधि प्रतीत होता है, लेकिन मैं उलझन में हूं कि मैं प्रस्तुतकर्ता को गतिविधि के माध्यम से टुकड़े के साथ संवाद करने की अनुमति कैसे दे सकता हूं। फिलहाल प्रेजेंटर गतिविधि की इंटरफ़ेस विधियों को कॉल करता है जो तब आवश्यक रूप से मूल्यों को प्राप्त करने और सेट करने के लिए सीधे स्पिनरों, टेक्स्टव्यू इत्यादि तक पहुंचते हैं। इनमें से प्रत्येक UI तत्वों को गतिविधि में घोषित किया जाता है यह छोटा है। यदि मैं इन सभी UI तत्वों को टुकड़ों में ले जाता हूं, लेकिन ऐसा लगता है कि मैं प्रत्येक गतिविधि और खंड के बीच इंटरफेस के पूरे नए सेट को लागू किए बिना उन्हें एक्सेस कर सकता हूं। मैंने टुकड़ों में ui तत्वों के लिए गतिविधि में एक संदर्भ उत्पन्न करने का प्रयास किया है (खंड रूट रूट प्राप्त करके और फिर उस दृश्य को ढूंढकर जिसे मैं अंदर चाहता हूं), हालांकि दर्शक हमेशा टुकड़े लोड नहीं करता है, इसलिए यह काम नहीं करेगा, और जब भी उन्हें लोड किया जाता है तब तक लेआउट तब तक नहीं बढ़ता जब तक कि गतिविधि चलती स्थिति में न हो, इसलिए मुझे हमेशा शून्य मान वापस आते हैं।

मुझे पता है कि यह एक अजीब सवाल है, लेकिन मैं अपने प्रस्तुति वर्गों को अब अलग टुकड़े टैब में संग्रहीत ui तत्वों के साथ बातचीत करने की अनुमति कैसे दे सकता हूं? मुझे लगता है कि मुझे इसके बारे में पूरी तरह गलत तरीके से जाना होगा, लेकिन मैं नहीं देख सकता कि इसे कैसे किया जाना चाहिए, इसलिए यदि कोई इस बारे में कुछ सलाह दे सकता है कि मैं इसके बारे में कैसे जा सकता हूं तो यह बहुत अच्छा होगा।

+0

एक ही दुविधा होने के कारण, रीसाइक्लिंग व्यू और व्यूपागर में कस्टम आइटम के साथ एमवीपी का उपयोग करके @ss में दर्द होता है –

उत्तर

1

अपने FragmentAcivity में सभी टुकड़ों के लिए एक एकल प्रस्तुतकर्ता बनाने के बारे में और फिर प्रत्येक एकल प्रस्तुति प्रत्येक टुकड़े (उर्फ टैब) के लिए एक इंटरफ़ेस लागू करने दें। फिर इस प्रेजेंटर को फ्रैगमेंट एक्टिविटी के उदाहरण से तुरंत चालू करें जिससे प्रस्तुतकर्ता के पास सभी टुकड़ों का संदर्भ होगा।

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