2011-06-03 15 views
5

दस्तावेज़ों में यह सुनिश्चित करता है कि आप एक्शन बार के साथ टैब का उपयोग करते समय एक टुकड़े की स्थिति को सहेज लें ताकि जब आप टैब स्विच करते हैं तो खंड पहले जैसा दिखता है। यह कैसे किया जाता है? टैब को संभालने के लिए नमूना का उपयोग करके, सहेजे गए इंस्टेंसस्टेट को टैब स्विच नहीं होने पर कॉल नहीं किया जाता है, इसलिए मैं राज्य को कहां से सहेजूं? क्या मैं इसे गतिविधि स्तर पर करता हूं? मैं केवल राज्य को क्षणिक होना चाहता हूं।एंड्रॉइड - हनीकॉम - एक्शन बार टैब खंड राज्य को बचाने/पुनर्स्थापित करने के लिए

धन्यवाद

उत्तर

1

Fragment.onSaveInstanceState() सही जगह है। जब राज्य को बचाया जाना चाहिए तो उसे बुलाया जाएगा। अगर इसे नहीं कहा जाता है, तो इसे अभी तक सहेजने की आवश्यकता नहीं है।

+0

यह मेरे लिए काम नहीं करता है। यदि आप टैब को संभालने के नमूना तरीके का उपयोग करते हैं, तो जब आप टैब का चयन रद्द करते हैं तो खंड प्रबंधक खंड को हटा देता है और जब आप टैब का चयन करते हैं तो खंड को जोड़ता है। यदि आपके पास टैब पर वापस जाने पर एक सूचीफ्रेममेंट है, तो यह भी याद नहीं है कि आप सूची में कहां थे। प्री-3.0 यदि आपके पास टैब में गतिविधियां थीं तो उनके राज्य को सिस्टम द्वारा याद किया गया था। मैं एचसी में ऐसा करने की कोशिश कर रहा हूं लेकिन सहेजे गए इंस्टेंसस्टेट को नहीं कहा जाता है। – Nic

+3

ऑनसेवेंस स्टेटस केवल तभी बुलाया जाता है जब टुकड़ा पूरी तरह से हटा दिया जाता है। उदाहरण के लिए यदि आप स्क्रीन अभिविन्यास बदलते हैं। यदि आप इस समय कुछ सहेजना चाहते हैं तो टैब को लेआउट से हटा दिया गया है, तो उस खंड में रोकें जो दिखाया गया है कि टैब चयनित है या नहीं। – Janusz

+0

मैं एक्टिविटी क्रिएटिव ब्लॉक के माध्यम से आने के लिए अद्यतन बंडल कैसे प्राप्त करूं यदि मैं इसे चालू करता हूं - मैं सेट आर्ग्यूमेंट को कॉल नहीं कर सकता क्योंकि खंड अभी भी सक्रिय है –

0

मैं एक ही समस्या में भाग गया और एक ऐसे समाधान के साथ आया जो अनावश्यक महसूस करता है (मुझे लगता है कि यह कार्यक्षमता लाइन के नीचे बेहतर काम करेगी), लेकिन यह काम करती है। समाधान गतिविधि के माध्यम से मैन्युअल रूप से राज्य बंडलों का प्रबंधन करना है।

बचत स्थिति: प्रत्येक खंड में, getState() जैसे कुछ नामक फ़ंक्शन को कार्यान्वित करें जो एक बंडल लौटाएगा जिसमें खंड डेटा सहेजना चाहता है। गतिविधि को तब से खंड से हटाए जाने से पहले कॉल करना चाहिए।

राज्य को बहाल करना: उस खंड में एक विधि या निर्माता को कार्यान्वित करें जो पहले सहेजे गए उसी बंडल को स्वीकार करता है, और बंडल को अनपैक करने के लिए उपयोग नहीं किया जाता है, हालांकि यह खंड के लिए समझ में आता है। जब गतिविधि खंड को वापस देखने के लिए जोड़ती है, उस बंडल को उस खंड में पास करें जो पहले प्रदान किया गया था, और आपको सेट किया जाना चाहिए।

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