काम नहीं कर रहा है मैं एक सिंगल फ्रैगमेंट एक्टिविटी के साथ एक साधारण खंड-आधारित अनुप्रयोग विकसित कर रहा हूं। आवेदन की प्रत्येक 'स्क्रीन' एक टुकड़े में निहित है और सभी खंडों को एप्लिकेशन स्टार्टअप पर कंटेनर लेआउट में जोड़ा जाता है।एंड्रॉइड - बैक बटन और खंड बैकस्टैक
// Set up fragments in Main Activity
fragMan = getFragmentManager();
FragmentTransaction ft = fragMan.beginTransaction();
ft.add(R.id.fragment_container, settingsFragment);
ft.add(R.id.fragment_container, mapFragment);
ft.add(R.id.fragment_container, tracksFragment);
ft.add(R.id.fragment_container, waypointsFragment);
ft.commit();
संक्रमण वर्तमान में दिखाई देने वाले खंड को छुपाकर, उचित टुकड़े दिखाकर पूरा किए जाते हैं।
ft = fragMan.beginTransaction();
ft.show(mapFragment);
ft.addToBackStack(null);
ft.commit();
यह सब ठीक काम करता है, लेकिन जब वापस बटन दबाया जाता है, आवेदन बाहर निकलता है, चाहे स्क्रीन दिखाई दे रहा है या क्या पिछले लेनदेन वापस ढेर करने के लिए जोड़ा गया है।
मैंने यह सुनिश्चित करने के लिए जांच की है कि बैक स्टैक सही ढंग से रिकॉर्ड जमा कर रहा है और संक्रमण विधियों के कई अलग-अलग बदलावों की कोशिश की है जैसे कि छिपाने/उन्हें दिखाने के बजाय टुकड़ों को प्रतिस्थापित करना, उन्हें चरों में संग्रहीत करने के बजाय टुकड़ों के नए उदाहरण बनाना, इत्यादि। जहां तक मैं कह सकता हूं, मेरा कोड उन सभी ट्यूटोरियल और उदाहरणों से मेल खाता है जो मुझे मिल सकता है, और मैं समान समस्याओं के किसी भी समान प्रश्न/उदाहरण भी नहीं ढूंढ पा रहा हूं, संभवतः मानक कार्यान्वयन 'बस काम करता है' अन्य शामिल हैं।
मुझे संदेह है कि यह मेरे मैनिफेस्ट में एक संपत्ति (जैसे मैंने बहुत अच्छी तरह से जांच की है) या मेरे एप्लिकेशन की स्थापना के तरीके से निहित कुछ स्तर पर आवेदन स्तर पर एक समस्या हो सकती है जो बैक बटन को ठीक से काम करने से रोकती है । मैं मैन्युअल रूप से संक्रमणों को संभालने के लिए बैकप्रेस पर ओवरराइड कर सकता हूं, लेकिन यह एक बहुत बदसूरत कामकाज की तरह लगता है। किसी भी विचार के रूप में यह संभवतः व्यवहार के रूप में क्यों व्यवहार नहीं कर सकता है? जिस तरह से यह नेक्सस 7 पर जेली बीन चल रहा है।