2013-10-18 9 views
7

एक आवेदन जब भी कोई टुकड़ा खो देता है फोकस (अर्थात किसी अन्य गतिविधि/टुकड़ा इस पर खोला जाता है) में मूल्यों की स्थापना के बाद भी, यह onSaveInstanceState() कहा जाता है है।बंडल() अशक्त देता है, onSaveInstanceState()

developers guide में भी उल्लेख किया गया है।

मैं इसे फिर से शुरू होने पर अपने टुकड़े की स्थिति को बनाए रखने के लिए इस दृष्टिकोण का उपयोग करने की कोशिश कर रहा हूं। मेरा इरादा bundle को onActivityCreated() में कॉल करना था, जब टुकड़ा फिर से शुरू हो गया था।

हालांकि onSaveInstanceState को खंड खोने से पहले बुलाया जाता है। लेकिन, जब onActivityCreated() कहा जाता है तो यह Bundle savedInstanceState को शून्य के रूप में प्राप्त करता है।

मैं बंडल से डेटा कैसे प्राप्त कर सकता हूं।

कोड:

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    MyListAdapter adapter = new MyListAdapter(getActivity(), 
      R.layout.my_row, titles, icons, this); 

    setListAdapter(adapter); 

    if (savedInstanceState != null) { 
     // Never goes inside this condiiton. 
     // Restore last state for checked position. 
     mCurCheckPosition = savedInstanceState.getInt("curChoice", 0); 
    } 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt("curChoice", mCurCheckPosition); 
} 
+0

कुछ log.v विधियों को आजमाएं, और लॉगकैट भेजें। यह दिखाएगा कि कार्यक्रम –

+0

स्विच करता है, एक और तरीका है जिसे आप 'साझा किए गए संदर्भ' –

+0

का उपयोग कर सकते हैं क्या यह हर समय त्रुटि कर रहा है, या केवल पहली बार जब आप एप्लिकेशन खोलते हैं? – Otra

उत्तर

0

तो इसका मतलब है कि आपकी गतिविधि और टुकड़ा बस रोक दिए गए थे और उनके उदाहरण राज्य को बचाने के लिए नहीं था (onSaveInstanceState() जरूरी नहीं बुलाया जाता है)।

यदि आप सुनिश्चित करना चाहते हैं कि onSaveInstanceState() कहा जाता है, तो डिवाइस की डेवलपर सेटिंग्स में "गतिविधियां न रखें" का चयन करें। फिर प्रत्येक बार जब कोई गतिविधि रोका जाता है, तो सिस्टम इसे onSaveInstanceState() पर कॉल करने के लिए मजबूर करता है (जब आप केवल पाठ्यक्रम के पीछे दबाते हैं)

+0

नहीं देता है, 'ऑनसेवस्टेंसस्टेट()' को डिबग करने पर 'कॉल किया जा रहा है। मेरा प्रश्न अपडेट किया गया – reiley

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