6

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

  • मेरे पास कुछ टैब दिखाने वाला एक एप्लिकेशन है। उनमें से एक टैब ViewPager दिखा रहा है, जिसमें दो सूची फ़्रेगमेंट हैं। वे ListFragments ViewPager के ऑनक्रेट ईवेंट में बनाए गए हैं।
  • जब आप ListFragments में से एक में एक आइटम पर क्लिक करें, यह एक अलग टुकड़ा करके पूरे ViewPagerFragment को बदल रहा है (जो एक और एक ListFrament है)।

यहाँ कोड है कि मैं नए 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 बदलने के लिए कर रहा है, सब कुछ ठीक काम कर रहा है। लेकिन, उपयोगकर्ता वापस बटन पर क्लिक करते हैं, मैं निम्नलिखित स्थिति मिलती है:

  • ViewPager (onCreateView से) ठीक पुन: लोड है, लेकिन ListFragment अंदर नहीं दिखाया जाएगा। मेरी ListFragment की वस्तु की तरह देखो अभी भी जीवित हैं, लेकिन यह है कि वे अपने दृश्य को खो दिया लगता है, और onCreateView इसे पुन: करने के लिए नहीं कहा है (क्योंकि वस्तु सोया नहीं था, जबकि ViewPager बाहर गया था)।

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

उत्तर

19

ठीक है, जैसा कि आप देख सकते हैं, मैं नहीं एक Android उपयोगकर्ता (मैं iOS पर यूआई के बारे में भी बहुत कुछ जानते हैं) हूँ। यही कारण है कि मैं उलझन में था।

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

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

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); 
+1

क्या ऊपर वर्णित सटीक एक ही समस्या थी और GetChildFragmentManager में गुज़रने के साथ एडाप्टर सेट करना समस्या हल हो गई। धन्यवाद! अब पिछली देखी गई स्थिति को स्टोर करने और बैकस्टैक पॉप करते समय इसे पुनर्स्थापित करने का तरीका पता लगाना होगा; – speedynomads

+2

मेरे जीवन को बचाया। धन्यवाद। – Paul

+0

कमाल! धन्यवाद! –

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