2013-06-06 14 views
9

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

जब मैं दराज में एक आइटम पर क्लिक करें - घर, उदाहरण के लिए मैं यह मुझे एक स्क्रीन जहाँ मैं सब सामान मैं विशिष्ट स्क्रीन के लिए एक विशेष लेआउट में बनाया है करने के लिए लाना चाहते हैं। यह TextViews और छवियों जैसी सभी स्थिर सामग्री है, इसलिए मुझे उनके साथ कुछ भी करने की ज़रूरत नहीं है।

क्या मुझे activity और ड्रावर के ListView पर प्रत्येक आइटम के लिए एक लेआउट बनाना चाहिए (और अभी तक कैसे करें) onItemSelected() में गतिविधि शुरू करें? या मैं फ्लाई पर हर बार एक टुकड़ा बनाने की तरह कुछ कर सकते हैं मैं ListView में एक आइटम पर क्लिक करें और कहते हैं कि कुछ की तरह

if(homeClicked){ //use home.xml as layout } 
if(contactClicked){ //use contact.xml as layout } 

संपादित

एक परीक्षण मैं onItemClick() एक विधि है कि पारित कर दिया में डाल के रूप में सरणी स्थिति में क्लिक किया गया। एक परीक्षण के रूप मैं बस की तरह इस्तेमाल किया:

if(position==2) { // this is "contact" in the list layout 
    setContentView(R.layout.contacts); 
} 

यह कार्य करता है, लेकिन स्पष्ट रूप से मैं संपर्कों लेआउट सामान के रूप में दराज खो DrawerLayout में नेस्ट नहीं है। स्थिति पर का उपयोग करने और setContentView() का उपयोग करने के बजाय DrawerLayout में घोंसला करने के लिए किसी भी लेआउट को संशोधित करने के बजाय मेरे लक्ष्य को प्राप्त करने का एक और शानदार तरीका है? (मैं भी नहीं जानता कि यदि यह संभव है -, के रूप में वहाँ बराबर आईडी नहीं शायद)

@Stefan इस संपादित वहाँ टिप्पणी जबाब

धन्यवाद स्टीफन में पर्याप्त स्थान नहीं है के रूप में, गूगल उदाहरण है वह चीज जो मुझे और उलझन में डाल देती है। मुझे यकीन है कि टुकड़ों के बारे में बहुत कम स्नीकी चीज है जिसे मैंने शायद 10k बार पढ़ा है लेकिन मेरा दिमाग आत्मसात करने से इंकार कर देता है। जब तक मैं समझ गया, Google के उदाहरण में जब आप दराज में किसी आइटम पर क्लिक करते हैं, तो यह एक नया टुकड़ा बनाता है और यह टुकड़ा MainActivity के xml लेआउट में ड्रॉवर के ListView के अलावा एकमात्र चीज़ को प्रतिस्थापित करता है, जो FrameLayout है जो स्क्रीन की सभी जगह लेता है। फिर सभी टुकड़े एक ग्रह ImageView प्रदर्शित करते हैं, इसलिए कोड उस छवि को ListView आइटम क्लिक के आधार पर उस छवि को बदलने के लिए खंड को कहता है।

उत्तर

5

ओके, यहां बहुत सारे स्टार्टर प्रश्न हैं जो अभी तक बहुत ही नए और अपरिभाषित हैं।

सबसे पहले, आप बस एक नई गतिविधि शुरू कर सकते हैं;

this.startActivity(new Intent(this, ActivityClassName.class)); 
किसी भी गतिविधि से

(या टुकड़ा, एक सा 'इस' = 'this.getActivity()' के लिए परिवर्तित)

कोई फर्क नहीं पड़ता अगर आप क्रियाएँ या टुकड़े का उपयोग करें, आप हमेशा एक बनाना पड़ेगा कक्षा और एक संबंधित एक्सएमएल व्यू। आप कुछ सामान्य बना सकते हैं, लेकिन अधिकांश समय आप ऐसा नहीं करना चाहते हैं।

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

सामान्यतः, यह सबसे आसान है और सबसे नई गतिविधि शुरू करने के लिए 'जितना होना चाहिए'। एक गतिविधि के रूप में संभवतः एकाधिक भागों (जो टुकड़े हो सकते हैं) के साथ एक दृश्य स्क्रीन के बराबर होना चाहिए।

प्रैक्टिस में हालांकि, आप अधिक से अधिक Google ऐप्स (Google Music, Play store, new Gmail ..) देखते हैं जो इस विचार को त्यागते हैं और 1 गतिविधि का उपयोग करते हैं जो केवल फ्रैगमेंट्स को लगातार स्विच करता है।

तकनीकी रूप से इस तरह की जगह एप्लिकेशन भूमिका में गतिविधि को स्थानांतरित करती है, जो अतिरिक्त कठिनाइयों को ला सकती है। हालांकि, संक्रमण प्रतिबिंबित हैं, उदाहरण के लिए, एक्शनबार वही रहता है और जैसे ही 'एंकर' Google इसे पसंद करता है।

हालांकि यह लगता है, कि वे बजाय उनके ट्यूटोरियल में टुकड़े स्विचिंग क्रियाएँ शुरू कर रहे हैं, तो शायद आप इसे उस तरह से कोशिश करते हैं और 'काम करने के नए रास्ते' की सबसे नवीनतम होना चाहिए :)

http://developer.android.com/training/implementing-navigation/nav-drawer.html

+0

साइट पर नया है इसलिए मुझे नहीं पता कि कोई टिप्पणी संपादित करने से आपको कोई जानकारी मिलती है, बीटीडब्लू संपादित मुख्य पोस्ट के रूप में टिप्पणी स्थान – kandros

+0

Google उदाहरण उसी फ्रैगमेंट का पुनः उपयोग करता है एक छवि दृश्य स्विच करने के लिए एक अलग तर्क के साथ, लेकिन उसी फैशन में आप बस एक स्विच स्टेटमेंट में निर्माण कर सकते हैं और फ्रैगमेंट को पूरी तरह से नए टुकड़े के साथ प्रतिस्थापित कर सकते हैं जिसमें इसका अपना विचार और तर्क है। –

0

यह वास्तव में उलझन में है, मुझे पूरा यकीन है कि एंड्रॉइड इंजीनियर यहां कुछ याद कर चुके हैं!

उदाहरण के लिए आईओएस पर, आप आसानी से विंडोज़ पर कई "UIViewController" रख सकते हैं और आपके सभी एप्लिकेशन के लिए एक ही मेनू (या UITabViewController) प्राप्त कर सकते हैं। एक सामान्य व्यवहार डब्ल्यू stackoverflow ^^

लेकिन एंड्रॉयड पर, मैं कोई भी ;-(गतिविधियों को साथ NavDrawer या टैब का उपयोग करने के

मैं एक चुना करने जा रहा हूँ एक साफ समाधान है देखने पर/ओ 231 सवाल thats गतिविधि और कई टुकड़े दृष्टिकोण, चलो देखते हैं!

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