2012-11-03 17 views
8

मेरे पास हेडर बार (मेनू की तरह थोड़े) और 4 टुकड़े (मुख्य, ए, बी, सी) हैं जिनमें से मेन बैकस्टैक के लिए 'मुख्य/रूट' खंड होना चाहिए।एंड्रॉइड टुकड़े नेविगेशन और बैकस्टैक

समस्या तब होती है जब मेनू के माध्यम से उपयोगकर्ता उदाहरण के लिए जाता है MAIN> ए> बी> सी यदि मैं बस बैकस्टैक का उपयोग करता हूं तो यह विपरीत क्रम में जाएगा जो मैं नहीं चाहता। मैं वापस मुख्य करने के लिए कोई बात नहीं जाने के लिए बटन वापस की जरूरत है उपयोगकर्ता उन 3.

enter image description here

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

private void SwitchFragment(Fragment pFragment) 
{ 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment); 
    if (_CurrentFragment == _Frag_Main) 
     ft.addToBackStack(null); 
    ft.commit(); 

    _CurrentFragment = pFragment; 
} 
+0

ऐसा लगता है कि आप बैक स्टैक के लिए केवल मुख्य टुकड़ा जोड़ रहे हैं, न कि दूसरों को। –

उत्तर

4

आपका ढेर चाहिए अधिकतम

मुख्य पर 2 टुकड़े शामिल दिख रहा है मुख्य है onBackstack/AorBorC दिख रहा है। उपयोगकर्ता वापस ==> मुख्य दृश्यमान पर क्लिक करें। वापस ==> आवेदन अंत

पर उपयोगकर्ता क्लिक मैं ए/बी/सी में एक ही दृश्य में प्रदर्शित कर रहे हैं इस मामले में तो लगता है,

उपयोगकर्ता क्लिक अपने मेनू पर, आप अगर एक जांच करने के लिए है जब/बी/सी वर्तमान में प्रदर्शित किया गया है और इसे उपयोगकर्ता द्वारा चुने गए द्वारा प्रतिस्थापित किया गया है।

private void displayFragment(Fragment pFragment) { 
    Fragment fr = getSupportFragmentManager() 
      .findFragmentById(R.id.main_fl_fragmentcontainer);   
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(R.id.main_fl_fragmentcontainer, pFragment); 
    if (_CurrentFragment == _Frag_Main) { 
     ft.addToBackStack(null); 
    } 
    ft.commit();  
    _CurrentFragment = pFragment; 
} 

आपकी गतिविधि के OnBackPressed विधि को ओवरराइड कर सकता है।