android - नेस्टेड फ्रैगमेंट(एंड्रॉइड 4.2) का उपयोग करके व्यूपेगर के अंदर एक टुकड़ा कैसे जोड़ें




android-fragments android-viewpager (2)

मेरे पास तीन Fragments साथ एक ViewPager , प्रत्येक एक List (या Grid ) दिखाता है।

नए Android API level 17 (जेली बीन 4.2) में, सुविधाओं में से एक नेस्टेड फ्रैगमेंट्स है । नई कार्यक्षमता विवरण कहता है:

यदि आप व्यूपार्जर का उपयोग उन टुकड़ों को बनाने के लिए करते हैं जो बाएं और दाएं स्वाइप करते हैं और स्क्रीन स्पेस का बहुमत उपभोग करते हैं, तो अब आप प्रत्येक खंड पृष्ठ में टुकड़े डाल सकते हैं।

इसलिए, अगर मैं सही समझता हूं, तो अब मैं Fragments (उदाहरण के लिए अंदर एक बटन के साथ) के साथ ViewPager बना सकता हूं, और जब उपयोगकर्ता बटन को दबाता है तो इस नई सुविधा का उपयोग करके ViewPager को ढीले बिना एक और Fragment दिखाएं।

मैंने अपनी कई सुबह इस कई अलग-अलग तरीकों को लागू करने की कोशिश की है, लेकिन मैं इसे काम नहीं कर सकता ... क्या कोई इसे कार्यान्वित करने का एक सरल उदाहरण जोड़ सकता है?

पीएस: मुझे केवल इस तरह से करने में दिलचस्पी है, getChildFragmentManager सीखने के लिए कैसे काम करता है।


मान लें कि आपने सही एक्सएमएल लेआउट बनाए हैं। अब एक दृश्यपटल में टुकड़े प्रदर्शित करना बहुत आसान है जो किसी अन्य टुकड़े द्वारा होस्ट किया जाता है।

कोड माता-पिता में इस तरह कुछ दिखता है Fragment:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_parent, container, false);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
        mViewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
    }

    public static class MyAdapter extends FragmentPagerAdapter {

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return 4;
        }

        @Override
        public Fragment getItem(int position) {
            Bundle args = new Bundle();
            args.putInt(TextViewFragment.POSITION_KEY, position);
            return TextViewFragment.newInstance(args);
        }
    }

FragmentPagerAdapter को तुरंत चालू करते समय Fragment.getChildFragmentManager () का उपयोग करना महत्वपूर्ण है। यह भी ध्यान रखें कि आप बच्चों के टुकड़ों पर Fragment.setRetainInstance () का उपयोग नहीं कर सकते हैं या आपको अपवाद मिलेगा।

स्रोत कोड यहां पाया जा सकता है: https://github.com/marcoRS/nested-fragments


मैंने इंडेक्स 2 और 3 के लिए 3 तत्वों और 2 उप तत्वों के साथ एक व्यूपेगर बनाया है और यहां मैं जो करना चाहता था ..

मैंने इसे पिछले प्रश्नों और स्टैक ओवरफ्लो के उत्तरों से सहायता के साथ कार्यान्वित किया है और यहां लिंक है।

ViewPagerChildFragments





android-nested-fragment