2010-05-06 10 views
21

मैं एंड्रॉइड को रेस्तरां खोजने के लिए एक आवेदन कर रहा हूं, और कुछ मार्गदर्शन का स्वागत होगा! पहली स्क्रीन पर मैं एक सबमिट बटन (मुझे एक वेब सेवा से डेटा मिलता है) के साथ एक खोज फ़ील्ड रखना चाहता है, और खोज के परिणामों के साथ एक सूची के नीचे। सूची में से किसी एक आइटम पर क्लिक करते समय यह रेस्तरां के विवरण के साथ-साथ एक मानचित्र दिखाएगा जो एक मानचित्र दिखाएगा। मेरे प्रश्न हैं:मैं कितनी गतिविधियों का उपयोग करूँ?

  • क्या मैं एक ही गतिविधि में सब कुछ कर सकता हूं या क्या मुझे खोज के लिए एक गतिविधि करनी चाहिए, परिणाम सूची के लिए एक, रेस्तरां विवरण के लिए एक और मानचित्र के लिए दूसरा?
  • एक ही गतिविधि कर रहे हैं एप्लिकेशन को अधिक उत्तरदायी बनाते हैं?
  • मैं एक सामान्य गतिविधि के भीतर सूची और मानचित्र का उपयोग कैसे कर सकता हूं (सूची एक्टिविटी और MapActivity के बिना)?
+0

हाय जुलाई, क्या आप प्रश्न शीर्षक को अधिक वर्णनात्मक बनाने की कोशिश कर सकते हैं? – Casebash

+0

मैंने जोड़ा "मुझे कितनी गतिविधियों का उपयोग करना चाहिए?"। – jul

उत्तर

25

क्या मैं एक ही गतिविधि में सब कुछ कर सकता हूं या क्या मुझे खोज के लिए एक गतिविधि करनी चाहिए, एक परिणाम सूची के लिए, एक रेस्तरां विवरण के लिए, और मानचित्र के लिए दूसरा?

इसका उत्तर वास्तव में आपके आवेदन के प्रवाह पर निर्भर करता है। मुझे लगता है कि यहां ध्यान रखना सबसे महत्वपूर्ण बात यह है कि उपयोगकर्ता आपके ऐप को "बैक" बटन से कैसे नियंत्रित करेगा। जब आप एक नई गतिविधि बनाते हैं, जो इसे स्टैक पर रखता है, और उपयोगकर्ता हमेशा स्टैक से पॉप करने के लिए "वापस" दबा सकता है।

एक चरम यह है कि इन सभी चरणों को विभिन्न गतिविधियों में डालें। फिर उपयोगकर्ता के पास "बैक" बटन का उपयोग करके परम नियंत्रण होता है, लेकिन वे क्रियाकलापों के आसपास नाराज हो सकते हैं। इसे एक गतिविधि में डालकर दूसरा चरम है, और मैं इसके खिलाफ अत्यधिक सलाह देता हूं; उपयोगकर्ता नई स्क्रीन को एक अलग गतिविधि होने की उम्मीद करते हैं, एक जिसे वे "वापस" कर सकते हैं, और इसलिए यदि आप अपने सभी अंडों को एक गतिविधि में डाल देते हैं तो आपको खुद को "वापस" संभालना शुरू करना होगा।

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

एक ही गतिविधि कर रहे हैं एप्लिकेशन को और अधिक उत्तरदायी बनाते हैं?

वास्तव में नहीं। गतिविधियों को बनाने/निकालने के लिए समय लगता है, लेकिन नहीं अधिक समय। अपने एप्लिकेशन को लॉजिकल तरीके से (उपयोगकर्ता अनुभव के लिए) सेगमेंट करना बेहतर है।

मैं एक सामान्य गतिविधि के भीतर सूची और मानचित्र का उपयोग कैसे कर सकता हूं (सूची एक्टिविटी और मैपएक्टिविटी के बिना)?

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

मानचित्र एक अलग मामला हैं। मानचित्रों को प्रदर्शित करने के लिए आपको MapActivity का उपयोग करने की आवश्यकता होगी, क्योंकि MapActivity में विशेष सेटअप और टियरडाउन कोड है जिसे चलाने की आवश्यकता है। माफ़ कीजिये।

+1

बहुत धन्यवाद डैनियल। – jul

+0

@DanielLew क्या यह अभी भी सच है कि आपको नक्शा प्रदर्शित करने के लिए MapActivity का उपयोग करना होगा? मैं बस एंड्रॉइड (मोनो का उपयोग करके) में शुरू कर रहा हूं और किसी अन्य, अधिक व्यापक गतिविधि के हिस्से के रूप में मानचित्र दृश्य का उपयोग करने की आशा करता हूं। (मैं चाहता हूं कि उपयोगकर्ता मानचित्र या सूची दृश्यों के बीच स्विच करें) –

+0

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

1

मेरे पास खोज और सूची दोनों के साथ एक गतिविधि होगी, फिर दूसरा जो पुनर्व्यवहार के विवरण दिखाता है।

मुझे नहीं लगता कि यह केवल एक ही गतिविधि के साथ अच्छा काम करेगा।

क्रियाएँ में कई विचार हो सकते हैं - एक गतिविधि में मानचित्र और एक सूची हो सकती है यदि आवश्यक हो।

+0

धन्यवाद, मैं 2 गतिविधियों के साथ प्रयास करूंगा। – jul

1

मैं डैनियल के उत्कृष्ट उत्तर में कुछ मार्गदर्शन जोड़ना चाहता हूं।

उपयोगकर्ता एक गतिविधि के बीच अंतर को नहीं बदल सकते हैं जो बदलते हैं और कई गतिविधियों को अपने स्वयं के दृश्य के साथ - जब तक वे बैक बटन दबाते हैं। तो यह वास्तव में काफी महत्वपूर्ण है कि स्क्रीन पर जो भी दबाया जाता है उसके संबंध में बैक बटन में प्राकृतिक और तार्किक उद्देश्य होना चाहिए। जब उपयोगकर्ता इसका उपयोग करते हैं तो उपयोगकर्ता को कभी आश्चर्य नहीं होना चाहिए।

तो आपके पास प्रत्येक गतिविधि के लिए, खुद से पूछें कि बैक बटन का व्यवहार हर समय अंत उपयोगकर्ता के लिए तार्किक है या नहीं। यदि आपको ऐसा परिदृश्य मिलता है जहां यह नहीं है तो आपको अपनी गतिविधियों को दोबारा क्रियान्वित करना चाहिए - जिसमें एक या दो से अधिक गतिविधियों को एक में जोड़ना शामिल हो सकता है, कुछ जिम्मेदारियों को एक गतिविधि से दूसरे में ले जाना (लेकिन उन्हें दोनों रखना), या यहां तक ​​कि एक गतिविधि को विभाजित करना दो।

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

0

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

+0

आप वास्तव में अंतर्निहित व्यावसायिक तर्क से यूआई संरचना को अलग करने की सिफारिश कर रहे हैं, जो उत्कृष्ट सलाह है। हालांकि, इसका मतलब यह नहीं है कि आपको केवल एक गतिविधि तक ही सीमित होना है, केवल यह कि आप इन परतों के बीच युग्मन को कम करते हैं। –

+0

प्रत्येक गतिविधि के चारों ओर एक रैपर वर्ग एक समाधान के रूप में दिमाग में आता है। लेकिन फिर, ओएस की इच्छा पर गतिविधियां पुनरारंभ की जाती हैं, इसलिए किसी को यह सुनिश्चित करना होगा कि सभी आवश्यक डेटा प्री-लोड हो जाएं (साझा किए गए संदर्भ और इंस्टेंसबंडल ऑब्जेक्ट्स, लेकिन फिर, वे एंड्रॉइड-विशिष्ट हैं)। –

+0

यह खराब यूआई सलाह है, एंड्रॉइड उपयोगकर्ता अलग-अलग गतिविधियों में अलग-अलग खिड़कियों की अपेक्षा करते हैं। यह सलाह स्विंग पर निर्भरता से बचने के लिए किसी को एक जेएफआरएएम का उपयोग करने के बारे में बता रही है ... –

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