2013-10-25 8 views
5

मैं एक सवाल है, MainActivity के नीचे (FragmentActivity फैली) में टैब बार है, जब मैं अनुप्रयोग, fragment1 (tab1 में) और fragment2 (tab2 में) onCreateView, कॉल करेंगे और कुछ लोड हो रहा है आपरेशन का शुभारंभ (जैसे प्रत्येक सुगंध में कुछ स्कैन करें), लेकिन मुझे नहीं पता कि onCreateView पर कॉल करें जब मैं दो टैब स्विच करता हूं, तो मैं लोडिंग स्थिति रखना चाहता हूं, फिर भी मैं एक दूसरे से स्विच करता हूं।एंड्रॉइड में अलग टैब (जैसे टैब 1, टैब 2) स्विच करते समय क्रिएटिव्यू पर कॉल को कैसे रोकें?

मैं इसे कैसे कार्यान्वित करूं (बस इस तरह का उपयोग करें, मैं टैबहोस्ट का उपयोग नहीं करना चाहता)?

+0

आपने यह नहीं समझाया कि आप CreateView पर क्यों कॉल करना बंद करना चाहते हैं? – hendrix

उत्तर

5

Fragment.onCreateViewfragment lifecycle का मानक हिस्सा है और आपको इसे कॉल करने से रोकने की कोशिश नहीं करनी चाहिए।

जो मैं समझता हूं उससे, आपकी ऑनक्रेट व्यू विधि शायद कुछ बदसूरत काम कर रही है और यही कारण है कि आप इसे कॉल नहीं करना चाहते हैं। यदि ऐसा है, तो आपको इस कोड को किसी अन्य जीवन चक्र विधि में ले जाना चाहिए, जिसे अक्सर नहीं कहा जाएगा (उदाहरण के लिए onCreate, या onActivityCreated, यदि आपको अपने गतिविधि संदर्भ की भी आवश्यकता है)।

onCreateView का उपयोग केवल आपके लेआउट को बढ़ाने के लिए किया जाना चाहिए, और संभावित रूप से उन UI घटकों के संदर्भ बनाना चाहिए जिनके साथ आपको बातचीत करने की आवश्यकता होगी।

+0

मेरा मतलब है कि मैं बिना किसी टुकड़े के टैबहोस्ट जैसे प्रभाव चाहता हूं, गतिविधि केवल एक बार क्रिएट विधि पर कॉल करेगी, और उसी समय यूई अपडेट करें –

+0

@LijunLou अद्यतन उत्तर – hendrix

+0

का मतलब यह नहीं है कि वह कुछ बदसूरत कर रहा है ... उदाहरण के लिए , अगर किसी टुकड़े को सूची प्राप्त करने का अनुरोध करने की आवश्यकता होती है, तो आप टैब के बीच हर बार यह अनुरोध नहीं करना चाहते हैं। – Corbella

0

अपनी लोडिंग ऑनक्रेट या ऑन विधि विधि में शुरू करें, फिर इसे क्रिएटिव्यू के साथ पुनरारंभ नहीं किया जाएगा। http://developer.android.com/guide/components/fragments.html इस पृष्ठ में खंड जीवन चक्र है।

+0

लेकिन मैं नेटवर्क ऑपरेशन को मूल स्थिति रखना चाहता हूं (स्विच टैब 2 के बाद भी और वापस आना), इसलिए यह UI को अपडेट नहीं करेगा (जैसे सूचीदृश्य में एसिंक्रोनस लोडिंग छवियां) –

+0

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

+0

हां, मुझे खंड मिला है पेजर एडाप्टर इस फ़ंक्शन को लागू कर सकता है –

5

यदि आप setOffscreenPageLimit(2) पर अपने ViewPager पर कॉल करते हैं, onCreateView केवल शुरुआत में ही कॉल किया जाएगा।

+0

लेकिन मैं चाहता हूं कि फ्रैगमेंट ए ऑनक्रेट व्यू() कॉल, जब हम फ्रैगमेंट ए, और फ्रैगमेंट बी ऑनक्रेट व्यू() कॉल पर हों, जब हम फ्रैगमेंट बी पर हों, तो यह सभी ऑनक्रेट व्यू() को समान रूप से कॉल करता है और टैब –

+0

के स्वाइपिंग के दौरान कभी उन्हें दोबारा कॉल न करें यह वास्तव में काम करता है !! –

+0

मुझे भी एक ही समस्या का सामना करना पड़ रहा है क्योंकि "एर किम्मी ढिंग्रा" ने कहा, मैं टैब की स्वाइपिंग के दौरान फिर से ऑनक्वेट व्यू() को कॉल करने में सक्षम नहीं हूं। कृपया मेरी मदद करें – gautam

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