करें @ trueblue का जवाब मुझे एक मामूली लेकिन कष्टप्रद मुद्दे के साथ जा रहा हो गया। जब बैकस्टैक पर केवल एक टुकड़ा होता है और आप वापस बटन दबाते हैं, तो वह फ्रेम हटा दिया जाता है और ऐप एक खाली स्क्रीन के साथ सक्रिय रहता है। ऐप से बाहर निकलने के लिए उपयोगकर्ता को एक बार फिर बटन दबाए जाने की आवश्यकता होती है। मैं इस स्थिति
@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() == 0) {
super.onBackPressed();
}
else if(getFragmentManager().getBackStackEntryCount() == 1) {
moveTaskToBack(false);
}
else {
getFragmentManager().popBackStack();
}
}
को संभालने के लिए जब backstack में केवल 1 टुकड़ा, हम मूल रूप से वापस करने के लिए पूरे एप्लिकेशन को स्थानांतरित करने के एंड्रॉयड कह रहे हैं वहाँ के बाद करने के लिए मूल कोड को संशोधित किया।
अद्यतन (और शायद एक बेहतर जवाब)
तो यह चारों ओर कुछ और पढ़ने करने के बाद, मुझे पता चला आप add fragment manager transactions to back stack कर सकते हैं और फिर एंड्रॉयड स्वचालित रूप से और एक वांछित रास्ते में प्रेस वापस संभालती है कि। नीचे दिए कोड स्निपेट कैसे अंतिम पंक्ति है कि कैसे आप ढेर वापस करने के लिए एक सौदे को जोड़ने से पता चलता
Fragment fragment; //Create and instance of your fragment class here
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment).addToBackStack(null);
fragmentTransaction.commit();
fragmentTransaction.addToBackStack(null);
ऐसा करने के लिए पता चलता है। यह किसी को छोड़कर अधिकांश स्थितियों में टुकड़ों के लिए प्रेस समस्या हल करता है। यदि आप बैक बटन दबाते हैं, तो अंततः आप उस बिंदु तक पहुंच जाएंगे जब बैक स्टैक में केवल एक टुकड़ा होता है। इस बिंदु पर, आपको दो बातें
- में से एक करने के लिए गतिविधि जिसमें गतिविधि चल रहा है काम के पीछे ढेर से टुकड़ा आवास निकालें चाहते है। ऐसा इसलिए है क्योंकि आप रिक्त गतिविधि
- के साथ समाप्त नहीं करना चाहते हैं यदि गतिविधि कार्य के पीछे के ढेर में एकमात्र गतिविधि है, तो कार्य को पृष्ठभूमि में दबाएं।
मेरे मामले में, यह बाद में था, इसलिए मैं अपने पिछले जवाब से अधिरोहित onBackPressed
विधि संशोधित तरह
@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() == 1) {
moveTaskToBack(false);
}
else {
super.onBackPressed();
}
}
नीचे इस कोड को सरल है, क्योंकि यह कम तर्क है देखने के लिए और यह पर निर्भर करता है हमारे कस्टम कोड की तुलना में ढांचा। दुर्भाग्य से मैंने पहली स्थिति के लिए कोड को लागू करने का प्रबंधन नहीं किया क्योंकि मुझे इसकी आवश्यकता नहीं थी।
'सभी टुकड़ों में व्यक्तिगत बैक बटन होते हैं।' जो मुझे बिल्कुल समझ में नहीं आता है। क्या आप इसे और समझा सकते हैं? – Budius
बाएं टुकड़े वाले ए और दाएं खंड बी, मेरे पास ए के पहले बटन दबाते समय ए में 3 बटन हैं, ए 1 प्रदर्शित होता है। मेरे पास ए 1 में सूचीदृश्य है। जब सूचीदृश्य आइटम पर क्लिक करें, तो इसका विवरण दाईं ओर खंड बी 1 पर दिखाई देता है। ए –