2011-03-23 11 views
95

क्या मुझे कुछ याद आ रहा है या Fragment के पास onRestoreInstanceState() विधि नहीं है? यदि नहीं, तो मैं कुछ समान प्राप्त करने के बारे में कैसे जा सकता हूं?एंड्रॉइड खंड परRestoreInstanceState

उत्तर

167

टुकड़ों में onRestoreInstanceState विधि नहीं है।

आप उसी परिणाम को onActivityCreated में प्राप्त कर सकते हैं, जो सहेजे गए उदाहरण स्थिति (या शून्य) के साथ एक बंडल प्राप्त करता है।

स्रोत कोड here देखें।

+68

यह एक सतत डिजाइन नहीं है, है ना? –

+4

यह भी खंड को फिर से शुरू करने का ख्याल नहीं रखता है? विन्यास में बदलाव के लिए यह ठीक है, लेकिन क्या होगा यदि आप एक टुकड़े से एक गतिविधि में जाते हैं और फिर टुकड़े पर वापस जाते हैं? – speedynomads

+1

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

21

टुकड़े गाइड के ListFragment example में आप पा सकते हैं:

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

जो तुम इस तरह उपयोग कर सकते हैं: के बाद टुकड़ा ढेर से वापस लौट

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    if (savedInstanceState != null) { 
     // Restore last state for checked position. 
     mCurCheckPosition = savedInstanceState.getInt("curChoice", 0); 
    } 
} 

onActivityCreated() शुरू हो जाती है।

28

मुझे पता है, कि तुम जवाब स्वीकार कर लिया है, लेकिन आप official documentation about fragments पढ़ना चाहिए, और यह कहते हैं (अनुच्छेद "टुकड़ा जीवनचक्र हैंडलिंग"):

तुम एक बंडल का उपयोग कर एक टुकड़ा की स्थिति को बनाए रखने के लिए कर सकते हैं , यदि गतिविधि की प्रक्रिया मारे जाती है और गतिविधि को फिर से बनाया जाने पर आपको खंड स्थिति को पुनर्स्थापित करने की आवश्यकता होती है। आप टुकड़ा के onSaveInstanceState() कॉलबैक के दौरान राज्य को बचाने और या तो OnCreate(), onCreateView(), या onActivityCreated()

तो दौरान पुनर्स्थापित कर सकते हैं, तो आप उपयोग कर सकते हैं कि सूट आप सबसे अच्छा: onCreate(), onCreateView(), या onActivityCreated()

5

Fragment की onViewStateRestoredActivity की onRestoreInstanceState के बराबर है। लेकिन इसे onActivityCreated(Bundle) और onStart() से पहले कहा जाता है।

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