2013-03-06 8 views
6

मेरे पास कंटेनर के साथ FragmentActivity है, जहां मैंने FragmentViewPager के साथ रखा है। ViewPager में मैं 3 Fragment रों है:व्यूपेजर में फ्रैगमेंट

[MainActivity] 
    [ViewPagerFragment] 
     [Fragment1][Fragment2][Fragment3] 

उपयोगकर्ता Fragment1/Fragment2/Fragment3 पर एक बटन क्लिक करता है, मैं की जगह OtherFragment साथ ViewPagerFragment, तो पदानुक्रम इस तरह दिखता है:

[MainActivity] 
    [OtherFragment] 

जब मैंने वापस बटन, ViewPagerFragment को फिर से बनाया गया, साथ ही इसके नेस्टेड Fragment एस (Fragment1/Fragment2/Fragment3)।

ViewPagerFragment और इसके घोंसले वाले टुकड़ों की स्थिति को बचाने का कोई तरीका है? ताकि टुकड़े उनके राज्य को बनाए रख सकें और फिर से नहीं बनाया जाए?

मैंने ViewPagerFragment के लिए सेट किया है, लेकिन ऐसा लगता है कि यह प्रभावी नहीं होता है।

उत्तर

16

बस इस सेट: - जहां तर्क ViewPager

mViewPager.setOffscreenPageLimit में टुकड़े की संख्या है (3);

व्यूपेगर वर्तमान में उपयोग नहीं कर रहे चीजों को बंद करने में काफी उत्साही है, और यह वही है जो यहां हो रहा है। व्यूपार्जर के लिए डिफ़ॉल्ट व्यवहार पृष्ठ के किसी भी पृष्ठ को "चारों ओर रखने" के लिए है, और बाकी को नष्ट कर देता है। इसलिए आपके 3-पेज दृश्य में, पृष्ठ 3 का चयन करते समय पृष्ठ 3 नष्ट हो जाता है, फिर जब पृष्ठ 2 का चयन किया जाता है पृष्ठ 3 को फिर से बनाया जाता है। जैसा कि आपने देखा है, पृष्ठ 2 में केवल क्रिएट (..) को एक बार बुलाया गया है क्योंकि यह हमेशा वर्तमान में चयनित पृष्ठ के निकट है या है।

इसे हल करने के लिए, बस ViewPager.setOffscreenPageLimit (2) सेट करें। फिर ViewPager आपके सभी टुकड़े रखेगा। जाहिर है यह बड़ी संख्या में टुकड़ों के लिए एक अच्छा विचार नहीं है, लेकिन आपके मामले के लिए यह ठीक होना चाहिए।

+0

सिस्टम संसाधन कम होने पर आपको समस्याएं आ सकती हैं। आपके टुकड़े, या टुकड़े के भीतर कुछ विचार, उन संसाधनों को कहीं और खर्च करने के लिए फेंक दिए जाएंगे। – sudocoder

संबंधित मुद्दे