2014-12-31 12 views
6

के साथ बैकप्रेस को कैसे संभालना है मेरे पास फ्रैगमेंट गतिविधि है contatin नेविगेशन ड्रॉवर के साथ। इसके बाद नेविगेशन ड्रॉवर आइटम पर क्लिक करने के बाद यह एक टुकड़ा 1, खंड 2, टुकड़ा 3 खोलता है और फिर बटन के बाद फ्रेगमेंट 1 खोलने के बाद नया टुकड़ा खोलें 4.फ्रैगमेंट

मैं वापस कुंजी दबाएँ घटना संभाल कैसे मैं टुकड़ा 4 पर ऐसा कर सकते? टुकड़ा 4 में महत्वपूर्ण वापस क्लिक करने के बाद मैं टुकड़ा 1.

वापस जाने के लिए

enter image description here

+0

आप कोई भी कार्य नहीं करते हैं यह बात होनी चाहिए, बैक प्रेस के बाद चुड़ैल टुकड़ा खोला गया? –

+0

http://stackoverflow.com/questions/7992216/android-fragment-handle-back-button-press – duggu

+0

बैकप्रेस के बाद कोई भी मेरा होम लेआउट खोलता है जो 'फ्रैगमेंट 2' है, इसे नेविगेशन ड्रॉवर – kosala

उत्तर

19

BackStack के टुकड़े जोड़ें चाहते हैं। इससे पहले कि (प्रतिबद्ध) लेन-देन, का उपयोग addToBackStack() विधि यानी

addToBackStack("Some String").commit(); 

और onBackPressed()

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     this.finish(); 
    } 
} 
+0

खोला जाना चाहिए तो आप इस 'getFragmentManager() \t \t \t .beginTransaction() \t \t \t .replace की तरह मतलब (, \t \t \t \t \t Entry_Account.newInstance(), Entry_Account.TAG) .addToBackStack() \t \t \t .commit(); 'मेरे' फ्रैगमेंट 1' के अंदर 'लेकिन यह कहता है कि' FragmentTransaction प्रकार में विधि addToBackStack (स्ट्रिंग) तर्कों के लिए लागू नहीं है() ' – kosala

+5

गतिविधि पर बैकप्रेस() विधि (fm। getBackStackEntryCount()> 0) {खंड को पॉप करें} अन्य {super.onBackPressed();} – sandeepmaaram

+0

'{pop the fragment}' – kosala

4

अवहेलना onBackPress() विधि इन और चेक अपने fragement प्रबंधक backStack प्रविष्टि> 0 अगर है कि यह 0 से अधिक की तुलना में popback अन्यथा ढेर अपनी गतिविधि को समाप्त करना है ..

if(getFramentManager().getBackStackEntryCount()>0){ 
     // popback statck. 
} 
else{ 
    // finish your activity. 
} 

BackStack करने के लिए अपने fragement जोड़ने के लिए टुकड़ा पदानुक्रम बनाए रखने के लिए मत भूलना ..

fragTransacion.addToBackStack(TAG); 
+0

मैं खंड पदानुक्रम को बनाए रखने के लिए बैकस्टैक में कैसे जुड़ाव जोड़ सकता हूं? – kosala

+0

@ समीरा मेरे संपादित उत्तर –

+0

की जांच की है। धन्यवाद। – kosala

5

backstack करने की तरह होना चाहिए टुकड़ा जोड़ने के लिए आपका कोड:

getFragmentManager() .beginTransaction() .replace(R.id.content_frame, Entry_Account.newInstance(), Entry_Account.TAG).addToBackStack("Some string") .commit(); 
फिर गतिविधि के onBackPressed विधि पर

, इस स्निपेट का उपयोग:

@Override 
public void onBackPressed() { 
if(getFramentManager().getBackStackEntryCount()>0){ 
     // popback statck. 
} 
else{ 
    // finish your activity. 
} 
} 
+0

'@Override सार्वजनिक शून्य onBackPressed() {अगर (getSupportFragmentManager() getBackStackEntryCount()> 0।) {GetSupportFragmentManager() popBackStack()।; } else {this.finish(); }} ' – kosala