Android टुकड़ा onRestoreInstanceState


120

क्या मुझे कुछ याद आ रहा है या Fragmentकोई onRestoreInstanceState()विधि नहीं है ? यदि नहीं, तो मैं कुछ समान कैसे प्राप्त कर सकता हूं?

जवाबों:


200

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

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

यहां सोर्स कोड की जांच करें


90
यह एक सुसंगत डिजाइन नहीं है, क्या यह है?
एहतेश चौधरी

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

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

3
onActivityCreated () टुकड़ा की स्थिति को पुनर्स्थापित करने का एकमात्र तरीका नहीं है। आप इसे onCreate (), onCreateView (), या onActivityCreated () के दौरान पुनर्स्थापित कर सकते हैं। developer.android.com/guide/compenders/fragments.html
shaby

1
@ EhteshChoudhury एंड्रॉइड ऐप डेवलपमेंट में कुछ भी नहीं "सुसंगत डिज़ाइन" है। यह सब गड़बड़ है और सब कुछ "पदावनत" है।
करणवीर सिंह

43

मुझे पता है, कि आपने उत्तर स्वीकार कर लिया है, लेकिन आपको टुकड़ों के बारे में आधिकारिक दस्तावेज पढ़ना चाहिए , और यह कहता है (पैराग्राफ "द फ्रेगमेंट लाइफसाइकल को हैंडल करना"):

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

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


29

Fragments Guide की ListFragment उदाहरण में आप पा सकते हैं:

@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() खंड से वापस आने के बाद आह्वान किया जाता है।


13

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.