जैसा कि ध्रुव गरोला ने उत्तर दिया, आप बंडल सहेजे गए इंस्टेंसस्टैट का उपयोग करके एप्लिकेशन की स्थिति को बचा सकते हैं। मैं एक बहुत ही सरल उदाहरण देने की कोशिश कर रहा हूं कि मेरे जैसे नए शिक्षार्थी आसानी से समझ सकें।
मान लीजिए, आपके पास TextView और एक बटन के साथ एक साधारण टुकड़ा है। हर बार जब आप बटन पर क्लिक करते हैं तो पाठ में परिवर्तन होता है। अब, आप डिवाइस / एमुलेटर का ओरिएंटेशन बदलें और ध्यान दें कि आपने डेटा खो दिया है (मतलब आपको क्लिक करने के बाद बदले हुए डेटा) और टुकड़ा पहली बार फिर से शुरू होता है। बंड सहेजे हुए का उपयोग करके। InstanceState हम इससे छुटकारा पा सकते हैं। यदि आप टुकड़े के जीवन काल में एक नज़र रखना। टुकड़ा जीवनचक्र आपको मिलेगा कि एक विधि "onSaveInstanceState" कहलाती है जब टुकड़ा नष्ट होने वाला होता है।
तो, हम इस तरह से उस बंडल में परिवर्तित पाठ मान का मतलब राज्य को बचा सकते हैं
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
ओरिएंटेशन करने के बाद "onCreate" विधि को सही कहा जाएगा? इसलिए हम ऐसा कर सकते हैं
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
अब, आप अभिविन्यास के बाद अपना मूल्य नहीं खोएंगे। हमेशा संशोधित मूल्य प्रदर्शित किया जाएगा।