जब एक टुकड़ा को हटाने मैं savedInstanceState()
उपयोग कर सकते हैं राज्य को बचाने के लिए से टुकड़ा बहाल है, तो राज्य जब मैं वापस ढेर बंद टुकड़ा पॉप बहाल? जब मैं बैक स्टैक से टुकड़ा बहाल करता हूं, सहेजे गए इंस्टेंसस्टेट बंडल हमेशा शून्य होता है।savedInstanceState जब वापस ढेर
अभी, ऐप प्रवाह है: खंड बनाया गया -> खंड हटा दिया गया (वापस ढेर में जोड़ा गया) -> बैक स्टैक से सहेजा गया टुकड़ा (सहेजा गया इंस्टेंसस्टेट बंडल शून्य है)।
public void onActivityCreated(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
Long playlistId = bundle.getLong(Constants.PLAYLIST_ID);
int playlistItemId = bundle.getInt(Constants.PLAYLISTITEM_ID);
if (savedInstanceState == null) {
selectedVideoNumber = playlistItemId;
} else {
selectedVideoNumber = savedInstanceState.getInt("SELECTED_VIDEO");
}
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(Constants.SELECTED_VIDEO, selectedVideoNumber);
}
मुझे लगता है कि समस्या यह है कि onSavedInstanceState()
जब हटाया जा रहा है और ढेर वापस करने के लिए जोड़ा जा रहा है कभी नहीं कहा जाता है:
यहाँ प्रासंगिक कोड है। अगर मैं onsavedInstanceState() का उपयोग नहीं कर सकता, तो क्या इसे ठीक करने का कोई और तरीका है?
कई धन्यवाद :) इसकी मेरी समस्या हल –
यकीन नहीं है कि यह एक अच्छा विचार है। यदि आप इसका संदर्भ सहेजते हैं तो क्या यह स्मृति को मुक्त करने के उद्देश्य को नष्ट करने का उद्देश्य है? – craigrs84
मुझे वास्तव में यकीन नहीं है, क्योंकि मैंने कोई प्रत्यक्ष परीक्षण नहीं किया है। हालांकि, मेरी सोच इस तरह जाती है।जब आप अपने लेआउट में सभी तत्वों को प्रारंभ करते हैं, तो उन तत्वों को वैश्विक चर के रूप में सेट करने के लिए मानक है, इसलिए यदि उपरोक्त उदाहरण में मैं संदर्भ के कारण मूल दृश्य को रीसायकल नहीं कर सका, तो एंड्रॉइड रीसायकल करने में सक्षम नहीं होगा इनमें से कोई भी दृश्य या तो स्मृति के साथ एक ही समस्या का कारण बनता है। – AllDayAmazing