मैं onSaveInstanceState
Fragment
रों के लिए बुलाया जा रहा है नहीं के बारे में कुछ इसी तरह के सवाल देखा है, लेकिन मेरे मामले Fragment
काम ठीक में, यह मुख्य FragmentActivity
कि परेशानी हो रही है।FragmentActivity onSaveInstanceState नहीं बुलाया हो रही
प्रासंगिक कोड काफी सरल लग रहा है:
public class MyFActivity extends FragmentActivity implements ActionBar.TabListener {
String[] allValues; // data to save
@Override
protected void onSaveInstanceState (Bundle outState) {
Log.d("putting it!", allValues.toString());
outState.putStringArray("allValues", allValues);
super.onSaveInstanceState(outState);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
allValues = savedInstanceState.getStringArray("allValues");
Log.d("getting it!", allValues.toString());
}
}
}
जब गतिविधि (वापसी बटन का प्रयोग) को रोक कर, onSaveInstanceState
कभी नहीं कहा जाता है, और फलस्वरूप, savedInstanceState
हमेशा null
एप्लिकेशन शुरू करने पर onCreate
विधि के भीतर है । मैं इस तरह एक ब्लॉक को जोड़ने की कोशिश की:
@Override
public void onPause() {
super.onPause();
onSaveInstanceState(new Bundle());
}
जो https://stackoverflow.com/a/14195202/362657 में सुझाव दिया गया था, लेकिन जब onSaveInstanceState
तो कहा जाता हो जाता है, savedInstanceState
onCreate
विधि के भीतर null
बनी हुई है। मैं क्या खो रहा हूँ?
"गतिविधि को रोकते समय (बैक बटन का उपयोग करके)" आमतौर पर यह फ्रैगमेंट को नष्ट कर देता है, इसलिए 'savedInstanceState' खो जाता है। जब आप डिवाइस को घुमाते हैं तो क्या आपको 'onCreate()' में उपयुक्त 'saveInstanceState' दिखाई देता है? – Sam
ऑनक्रेट की बजाय, शायद आपको रेज़्यूम() पर उपयोग करना चाहिए? यदि गतिविधि केवल रोका गया है, तो ऑनक्रेट() को दोबारा नहीं बुलाया जाना चाहिए, रेज़्यूम() – Tom
एचएम होना चाहिए, जो इसे समझाता है! इसे नष्ट कर दिया गया है। – SaltyNuts