android - नेस्टेड टुकड़े और द बैक स्टैक




android-fragments android-nested-fragment (2)

मेरे पास एक ही समस्या है, मैं घोंसले के टुकड़े करना चाहता हूं, और प्रत्येक नेस्टेड टुकड़े के लिए एक बैक स्टैक रखना चाहता हूं।

लेकिन ... ऐसा लगता है कि इस मामले को v4 समर्थन पुस्तकालय द्वारा नियंत्रित नहीं किया गया है पुस्तकालय में फ्रेग्मेंट ऍक्टिविटी कोड में, मैं पा सकता हूं:

public void onBackPressed() {
    if (!mFragments.popBackStackImmediate()) {
        finish();
    }
}

MFragments गतिविधि के टुकड़े प्रबंधक का प्रतिनिधित्व करता है, लेकिन ऐसा नहीं लगता है कि यह प्रबंधक बच्चों के प्रबंधकों को पॉप के "प्रचार" करता है। एक मैनेजर को मैन्युअल रूप से पॉपबैक स्टैक इम्यडिएट () को चाइल्ड मैनेजर पर कॉल करना होगा, जैसे कि फ्रैग्मेंट एक्टिविटी से विरासत में मिली गतिविधि में:

private Fragment myFragmentContainer;

    @Override
    public void onBackPressed() {
            if (!myFragmentContainer.getChildFragmentManager().popBackStackImmediate()) {
                finish(); //or call the popBackStack on the container if necessary
            }
    }

एक बेहतर तरीका हो सकता है, और एक अधिक स्वचालित तरीका हो सकता है, लेकिन मेरी ज़रूरतों के लिए यह ठीक है।

एंड्रॉइड में नेस्टेड फ्रैगमेंट्स के साथ बैक स्टैक का समर्थन करता है?

अगर ऐसा होता है, तो मैं क्या कर रहा हूँ गलत? मेरे कार्यान्वयन में, बैक बटन पूरी तरह से इस तथ्य की अनदेखी कर रहा है कि मैंने इस लेन-देन को बैक स्टैक में जोड़ा है। मुझे उम्मीद है कि यह नेस्टेड टुकड़ों के साथ एक मुद्दा की वजह से नहीं है और बस कुछ गलत तरीके से कर रहा हूं।

निम्नलिखित कोड मेरे टुकड़ों में से एक के अंदर है और जो कुछ नेस्टेड टुकड़ा वर्तमान में दिखा रहा है उसके साथ एक नया टुकड़ा स्वैप करने के लिए उपयोग किया जाता है:

     MyFragment fragment = new MyFragment();
     FragmentTransaction ft = getChildFragmentManager().beginTransaction();
     ft.setCustomAnimations(R.animator.slide_in_from_right, R.animator.slide_out_left, R.animator.slide_in_from_left, R.animator.slide_out_right);
     ft.addToBackStack(null);
     ft.replace(R.id.myFragmentHolder, fragment);
     ft.commit();

@Override
public void onBackPressed() {
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStack();
        return;
    }
    finish();
}




android-nested-fragment