2012-10-24 13 views
9

पर वापस ले जाने पर पिछली कुंजी को संभालें, मैं Fragments को Activity गतिशील रूप से उपयोगकर्ता इंटरैक्शन के आधार पर जोड़ता हूं। जब मैं बैक कुंजी दबाता हूं, तो टुकड़े पॉप होते हैं। हालांकि जब मैं खंड के लिए पिछली कुंजी दबाता हूं जिसे पहले ढेर में जोड़ा गया था, तो 'गतिविधि' एक खाली लेआउट दिखाती है। मैं इस बिंदु पर गतिविधि को 'फिनिश()' कहूंगा और गायब हो जाऊंगा। मैंने कोशिश की है:अंतिम खंड को

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    super.onKeyDown(keyCode, event); 
    if(keyCode == KeyEvent.KEYCODE_BACK){ 
     if(getFragmentManager().getBackStackEntryCount()==0){ 
      finish(); 
      return true; 
     } 
    } 
    return true; 
} 

लेकिन इसका बैक कुंजी कार्यक्षमता को अवरुद्ध करने का असर पड़ता है। सही दिशा में किसी भी पॉइंटर्स की सराहना की जाती है।

उत्तर

5

दूसरे return true; से return false; को इंगित करने के लिए कि आपने कुंजीपटल को संभाल नहीं लिया है। बैक स्टैक खाली होने पर गतिविधि को बंद करना चाहिए, और इसे अन्यथा छोड़ दें।

+0

धन्यवाद। यह और getBackStackEntryCount() == 1 चाल चल रही है। –

6

आप अपना पहला टुकड़ा कहां जोड़ रहे हैं? उस लेनदेन को पीछे की ढेर में न जोड़ें, इसे जिस तरह से आप चाहते हैं उसे काम करना चाहिए।

+0

सरल और प्रभावी। जिस तरह से मैं चाहता था बस काम करता है। धन्यवाद! – MrMaffen