मेरे पास नेविगेशन ड्रावर के साथ एक गतिविधि है और आवेदन शुरू होने पर गतिविधि में एक डिफ़ॉल्ट टुकड़ा सेट है।
मेरे नेविगेशन ड्रावर में 4 शीर्ष स्तर का नेविगेशन है
- टुकड़ा करना १
- टुकड़ा करना २
- टुकड़े करना ३
- टुकड़े करना ४
और गतिविधि के अंदर अंशों को स्विच करनाप्रत्येक नेविगेशन पर क्लिक करें। मैं खंड नेविगेशन को इस तरह लागू करना चाहता हूं कि प्रत्येक शीर्ष स्तर के नेविगेशन टुकड़े से, यदि उपयोगकर्ता बैक बटन पर क्लिक करता है तो उसे पहले मुख्य या डिफ़ॉल्ट टुकड़े पर आना चाहिए और वहां से ऐप को Google Play की तरह ही बाहर निकलना चाहिए। मैं इसे मास्टर टुकड़ा कहता हूं।
उदाहरण के लिए:
डिफ़ॉल्ट (मास्टर) टुकड़ा> टुकड़ा १
टुकड़ा> टुकड़ा 2
टुकड़ा 2 - वापस दबाया> बहरापन टुकड़ा और ऐसा ही।
मैंने अब तक क्या प्रयास किया है:
मैंने बैकस्टैक में टुकड़ा जोड़ने की कोशिश की है, लेकिन यह मुझे ढेर में सभी टुकड़े लेने में मदद नहीं करता है।
getSupportFragmentManager().beginTransaction()
.add(R.id.container, selectedFragment)
.addToBackStack("naviagtion_stack")
.commit();
मेरे प्रत्येक शीर्ष अंश में भी ढेर के बाल टुकड़े होते हैं इसलिए स्टैक काउंट ने भी मेरी मदद नहीं की।
मैं "अपने डिफ़ॉल्ट टुकड़े को निकालना और जोड़ना नहीं चाहता क्योंकि क्योंकि यह नेटवर्क से कुछ डेटा प्राप्त करता है इसलिए मनोरंजन फिर से नेटवर्क कॉल करेगा जिसे मैं नहीं चाहता"
मैं वही चाहता हूं जो Google Play करता है। मैं सिर्फ तर्क जानना चाहता हूं।
उत्तर:
उत्तर № 1 के लिए 1अपने मास्टर टुकड़े को बैकस्टैक में जोड़ें और टैग को याद रखें: fragmentManager.beginTransaction()
.add(R.id.main_layout, masterFragment)
.addToBackStack(INITIAL_STATE)
.commit();
इसी अंश को जोड़ने से पहले नेविगेशन तत्वों पर क्लिक करना चाहिए: fragmentManager.popBackStack(INITIAL_STATE, 0);
यह कॉल बैकस्टैक से सब कुछ हटा देता है लेकिन आपका मास्टर टुकड़ा।
सभी टुकड़ा लेनदेन (नेविगेशन टुकड़े सहित) आम तौर पर एक ही काम करना चाहिए, उदाहरण के लिए:
fragmentManager.beginTransaction()
.add(R.id.main_layout, fragment)
.addToBackStack(null)
.commit();