android - प्रतिबिंबित ViewPager और बैकस्टैक्स का जीवनचक्र?



android-fragments android-viewpager (1)

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

  • मेरे पास एक टैब है जो कुछ टैब दिखा रहा है उन टैब में से एक एक ViewPager दिखा रहा है, जिसमें दो ListFragments हैं। उन ListFragments ViewPager के onCreate घटना में बना रहे हैं।
  • जब आप ListFragments में से किसी एक आइटम पर क्लिक करते हैं, तो यह एक संपूर्ण खंड (जो कि एक अन्य ListFrament है) द्वारा संपूर्ण ViewPagerFragment को बदल रहा है।

यहाँ कोड है जो मैं ViewPager को नए ListFragment के साथ बदलने के लिए उपयोग करता हूं

FragmentManager fm = getFragmentManager();
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();

ft.replace(R.id.container, new RequestForm(requestsList.get(itemIndex)));
ft.addToBackStack(null);
ft.commit();

वहां से, सब कुछ ठीक काम कर रहा है लेकिन, अगर उपयोगकर्ता वापस बटन पर क्लिक करता है, तो मुझे निम्नलिखित स्थिति मिलती है:

  • ViewPager ठीक पुनः लोड कर रहा है (onCreateView से), लेकिन ListFragment अंदर दिखाई नहीं देगा। मेरी सूचीफ्रैंक की वस्तु की तरह दिखें, अब भी ज़िंदा है, लेकिन ऐसा लगता है कि उन्होंने अपना दृश्य खो दिया है, और क्रेटएव्यू को इसे फिर से तैयार करने के लिए नहीं कहा जाता है (क्योंकि ऑब्जेक्ट दृश्यपैगर के बाहर नहीं था)।

मैं अब यहां अधिक कोड पोस्ट नहीं कर रहा हूं, क्योंकि मेरा इरादा जानना है कि मैं क्या करने की कोशिश कर रहा हूं ठीक है या नहीं, एंड्रॉइड तरीके से सोचने में। क्या मुझे एंड्रॉइड एसडीके के खिलाफ लड़ना होगा, ताकि मुझे क्या करना है?


ठीक है, जैसा कि आप देख सकते हैं, मैं एक एंड्रॉइड उपयोगकर्ता नहीं हूं (आईओएस पर यूआई के बारे में ज्यादा जानता हूं)। यही कारण है कि मैं भ्रमित था।

अलग-अलग एप्लिकेशन देखने के बाद, मुझे पता चला कि जीमेल और Google Play ने नेविगेशन किया है जो कि मेरा एक छोटा सा दिखता है (एक नया टुकड़ा करके एक नया पेज बनाकर एक दृश्यपेज बदलकर)।

और मेरी समस्या के लिए, यह संरचना की समस्या नहीं थी। जब आप FragmentStatePagerAdapter बनाते हैं, तो getChildFragmentManager () का उपयोग करना सुनिश्चित करें और नहीं GetFragmentManager ()!

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());




android-nested-fragment