2012-01-12 36 views
5

के लिए एंड्रॉइड स्क्रीन अभिविन्यास हैंडलिंग मेरे पास एक गतिविधि है जिसमें एक स्पिनर है। के बाद से पोर्ट्रेट और लैंडस्केप मोड के लिए मैं अलग लेआउट तो मैं onConfigurationChanged विधिस्पिनर

@Override 
    public void onConfigurationChanged(Configuration conf) { 
     super.onConfigurationChanged(conf); 
     setContentView(R.layout.layout); 
     initUI(); 
    } 

में लेआउट बदलने हूँ लेकिन समस्या यह है कि जब मैं ओरिएंटेशन बदलने, मेरे स्पिनर निर्मित है, इसलिए यदि स्पिनर पोर्ट्रेट मोड में खुला है यह पास में मिलता है लैंडस्केप मोड। मेरी आवश्यकता है: यदि यह किसी भी मोड में खुला है, तो यह अभिविन्यास परिवर्तन के बाद खुला होना चाहिए। कृपया मुझे बताएं कि इस स्थिति को कैसे संभालना है।

+0

मैंने कोशिश नहीं की है, लेकिन दो विधि osavestate देखते हैं और उन्हें – Sameer

+0

कोशिश मुझे लगता है कि आप यहां से अपनी समस्या का समाधान मिल जाएगा ..... http spinner.Once में ऐसा ही कुछ बहाल: // डेवलपर .android.com/संसाधन/लेख/तेज़-स्क्रीन-अभिविन्यास-परिवर्तन.html – himanshu

उत्तर

0

कोशिश स्पिनर की performClick() विधि

0

को रोकने के लिए आप अपनी मालसूची फ़ाइल

<activity android:name=".Activity_name" 
      android:configChanges="orientation|keyboardHidden"> 

में लेकिन यह अपने लेआउट जोड़कर इस जोड़ सकते हैं अपने स्पिनर के फिर से निर्माण अपने आप को बदला नहीं जाएगा अपना डिवाइस घुमाएं, तो आप मैन्युअल रूप से प्रबंधित करने के लिए इस तरह है,

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){ 
      setContentView(R.layout.login_landscape); 
     } 
     else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      setContentView(R.layout.login);   
     } 
    } 

अधिक जानकारी के लिए आप मेरा उत्तर here देख सकते हैं।

+0

मैं एक ही काम कर रहा हूं लेकिन अभी भी लेआउट सेट करने के बाद स्पिनर मान सेट करने की आवश्यकता है अन्यथा स्पिनर खाली हो जाएगा। –

+0

उपर्युक्त कोड आज़माएं, यह राज्य को बनाए रखेगा। जैसे गतिविधि फिर से बनाई गई नहीं है। –

+0

मैंने उपरोक्त कोड की कोशिश की। मैं स्पिनर मूल्य में खाली देख रहा हूं क्योंकि मेरे पास पोर्टेट मोड में स्पिनर है और मेरे पास लैंडस्केप मोड में एक ही आईडी वाला एक और स्पिनर है। –

0

एक बार अभिविन्यास बदल जाता है, विधि को नष्ट कर दें और आपकी गतिविधि एक बार फिर से बनाई जाए। विध्वंस विधि से बचने के लिए आपको प्रकट फ़ाइल में कोड जोड़ने की आवश्यकता है। लेकिन इस मामले में केवल एक लेआउट का उपयोग किया जा सकता है, यदि आप अपनी सामग्री को दोबारा पोस्ट करना चाहते हैं तो आपको इसे गतिशील रूप से करने की आवश्यकता है।

android:configChanges="orientation|keyboardHidden" 
संबंधित मुद्दे