2012-10-10 6 views
9

एंड्रॉइड एमुलेटर में मेरे एप्लिकेशन व्यवहार को देखते हुए, मुझे लगता है कि संपादन अभिविन्यास सामग्री स्क्रीन अभिविन्यास (Ctrl + F11) बदलने के बाद संरक्षित है। लेकिन TextView सामग्री को इसके प्रारंभिक मान पर रीसेट कर दिया गया है और प्रोग्राम द्वारा सेट की गई नवीनतम जानकारी नहीं रखता है। परिभाषा के अनुसार यह व्यवहार है? इस सामग्री को रखने के लिए मैं क्या कर सकता हूं?स्क्रीन दृश्यता बदलने के बाद टेक्स्ट व्यू सामग्री खो जाती है

उत्तर

11

इस संपत्ति का उपयोग अपने टेक्स्ट व्यूandroid:freezesText="true" में करें।

+3

यह पर्याप्त प्रतीत नहीं होता है। आपको और क्या जोड़ना है? –

+1

@ डीपीके यह मेरे लिए काम किया; जोड़ने के लिए और कुछ नहीं है। – DBedrenko

3

जब अभिविन्यास परिवर्तन होते हैं, तो एंड्रॉइड गतिविधि को फिर से लोड करता है इसलिए टेक्स्टव्यू परिवर्तनों जैसी अधिकांश जानकारी को नष्ट कर देता है। आपको onSaveInstanceState() ओवरराइड करने की आवश्यकता होगी, जो स्क्रीन अभिविन्यास परिवर्तन होने से पहले चलाएगा। फिर आपके पास Bundle में इसका उपयोग होगा जो onCreate में पारित किया गया है। Activity जीवन चक्र को समझने के लिए आपको इसका संदर्भ भी देना चाहिए।

11

आप अपनी गतिविधि के अंदर दो तरीकों, नीचे के समान अधिभावी द्वारा डेटा की पकड़ रखने के लिए savedInstanceBundle उपयोग कर सकते हैं:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    // Save state to the savedInstanceState 
    savedInstanceState.putString("MyString", textview.getText()); 

} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore state from savedInstanceState 
    String myString = savedInstanceState.getString("MyString"); 
    textview.setText(myString); 
} 

onSaveInstanceState में Bundle के लिए अपने आइटम जोड़ें, और onRestoreInstanceState दौरान में उन्हें वापस पढ़ें । यह गतिविधियों को बनाते समय इरादों के माध्यम से मूल्यों को पारित करने के समान तरीके से काम करता है।

+0

मेरे लिए काम किया! धन्यवाद। –

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