2009-06-18 14 views
29

में एप्लिकेशन जैसे विज़ार्ड बनाएं, जो आपको लगता है कि एप्लिकेशन जैसे विज़ार्ड (उपयोगकर्ता अगले और बैक बटन के साथ स्क्रीन के बीच नेविगेट कर सकता है, और प्रत्येक स्क्रीन को कुछ राज्य डेटा सहेजना है) एंड्रॉइड प्लेटफार्म में सबसे अच्छा तरीका है।एंड्रॉइड

मैं मुख्य रूप से दो दृष्टिकोण में लगता है कि कर सकते हैं:

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

  2. एक गतिविधि और कई विचार होने के बाद, और प्रत्येक स्क्रीन परिवर्तन में मैं क्या विचार करता हूं, इससे मुझे और कोड का पुन: उपयोग करने में मदद मिलती है, लेकिन बचत राज्यों को गड़बड़ कर देता है।

आपको क्या लगता है? एंड्रॉइड पर ऐसा करने का सबसे अच्छा तरीका कौन सा है?

उत्तर

12

मैं सुझाव देता हूं कि यह 2 के साथ जा रहा है क्योंकि यह गतिविधियों और विचारों के लक्ष्य को फिट करता है। इस मामले में राज्य को सहेजना आसान है - यदि आप एमवीसी पैटर्न का उपयोग करते हैं, तो आप केवल एक मॉडल ऑब्जेक्ट कर सकते हैं जो दृश्यों के साथ पारित हो। प्रत्येक दृश्य में मॉडल के भाग होंगे जो इसे पढ़/लिख सकते हैं। कोई फर्क नहीं पड़ता कि आप कहाँ हैं, मॉडल हमेशा चालू राज्य होना चाहिए। यदि आप निपटाए जाते हैं, तो बस मॉडल को सहेजें। जब आप प्रत्येक पृष्ठ को दिखाते हैं तो मॉडल से पहले से ही पढ़ा जाता है क्योंकि पुनर्स्थापित करना स्वचालित रूप से कार्य करता है।

+0

एक अच्छा विकल्प प्रतीत होता है – Aada

+2

एक लाइब्रेरी है जो आपको विज़ार्ड कार्यक्षमता को बहुत आसान बनाने में सक्षम बनाती है, [WizarDroid] (http: // wizardroid.codepond.org)। यह अच्छी तरह से प्रलेखित और निरंतर विकास पर है। –

+0

@ CodePond.org यह वही है जो मुझे चाहिए था। यह बहुत अच्छा काम करता है और मुझे उदाहरण की नकल करने के लिए कोई समय नहीं लगा। – theblang

1

मुझे लगता है कि 2 बेहतर है। प्रत्येक "पृष्ठ" को एक दृश्य में रखें और फिर उन्हें दिखाने और छिपाने के बीच वैकल्पिक करें। अच्छा संक्रमण करने के लिए यह तुच्छ बनाता है। आप किस राज्य को बनाए रखने के बारे में सोच रहे हैं? एकमात्र ऐसा जो स्वचालित रूप से काम नहीं करता है, फोकस होगा और मुझे लगता है कि आप पेज को स्विच करते समय हर बार रीसेट करना चाहते हैं। यदि आपको लगता है कि यह आपके ऐप के लिए सही व्यवहार है तो वापस पकड़ना भी मुश्किल है।

1 के साथ आप लगभग अपने सभी कोड का पुन: उपयोग कर सकते हैं (केवल अपनी खुद की विज़ार्डबेस श्रेणी को परिभाषित करें) लेकिन मुझे लगता है कि विचारों के बीच स्विच करने की तुलना में गतिविधियां लॉन्च करने के लिए बहुत धीमी हैं (और अधिक मेमोरी की आवश्यकता है)।

6

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

+0

एंड्रॉइड को काम करना है। –

+0

@Isaac Waller क्या है? ViewFlipper का उपयोग नहीं कर रहे हैं? –

+0

http://developer.android.com/reference/android/widget/ViewFlipper.html – wes

17

मैंने एक हल्के एंड्रॉइड लाइब्रेरी विकसित की है, जो एंड्रॉइड के व्यूपेजर के शीर्ष पर बनाया गया है जिसका उपयोग गतिविधियों जैसे जादूगर बनाने के लिए किया जा सकता है। इसे देखें: WizarDroid

+4

इसे और अधिक वोट चाहिए। अच्छा समाधान –

+0

यह एक अच्छा समाधान है, लेकिन काफी सामान्य नहीं है। दर्शकों पर रिलायंस किसी भी तरफ कम से कम एक टुकड़ा बनाने के लिए आवश्यक बनाता है, जो अगले चरण की सामग्री अभी तक निर्धारित नहीं होने पर सुविधाजनक नहीं हो सकता है। –

+0

विज़ार्ड्रॉइड का उपयोग करने का तरीका नहीं समझ सकता है जो समर्थन lib पर निर्भर करता है 19.x w/newer support lib संस्करण – m02ph3u5