2012-12-14 15 views
11

में अभिविन्यास परिवर्तन की जांच करने के लिए कहां मेरे ऐप में, मेरे पास के साथ Fragment एस सभी पोर्ट्रेट मोड में एक विशिष्ट Fragment को छोड़कर है। मैं Fragment एस के बीच FragmentActivity में पाद लेख View एस के बीच स्थानांतरित करता हूं।एंड्रॉइड खंड

मेरे पास एक अलग लेआउट है (वास्तव में एक ही नाम है लेकिन अलग-अलग विजेट View एस) इस विशिष्ट Fragment के लिए अभिविन्यास परिवर्तन होने पर। जब लैंडस्केप मोड में, मैं Fragment लेआउट View और ViewFragmentActivity और जब चित्र में वापस आ गया, तो सबकुछ वापस जोड़कर विशिष्ट विजेट को हटाना चाहता हूं।

मैं सभी डेटा मैं Fragment में onSavedInstanceState() में की जरूरत है बचाया है, लेकिन जहां सबसे अच्छा मैं संभवतः ताकि मैं View रों उचित रूप से बहाल कर सकते हैं एक ओरिएंटेशन बदलने के लिए परीक्षण करना चाहिए?

सुनिश्चित नहीं हैं कि मैं क्योंकि मैं एंड्रॉयड की जरूरत नहीं है मेरी Fragment में वहाँ onConfigurationChange() और परीक्षण ओवरराइड कर सकते हैं: मेरे एंड्रॉयड Manifest में configChanges = "अभिविन्यास"

उत्तर

22

इस चेक को चालू करें() पर रखें। जब आप अपने डिवाइस को घुमाते हैं तो ऐप पुनरारंभ होता है। तो जब ऐप पुनरारंभ होता है तो क्रिएट को फिर से कॉल किया जाता है।

int currentOrientation = getResources().getConfiguration().orientation; 
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) { 
    // Landscape 
} 
else { 
    // Portrait 
} 
+0

धन्यवाद। मुझे अन्य विचार दें जो कोशिश करें। – irobotxxx

+4

आप पोर्ट्रेट और लैंडस्केप दृश्यों के लिए अलग-अलग एक्सएमएल बना सकते हैं। अपने "res" फ़ोल्डर में "लेआउट-लैंड" नामक फ़ोल्डर बनाएं और उस फ़ोल्डर में अपने परिदृश्य दृश्य के लिए एक XML बनाएं। दोनों एक्सएमएल (चित्र और परिदृश्य) के नामों को समान रखें। आपके विचार स्वचालित रूप से समायोजित किए जाएंगे। सभी एक्सएमएल अक्षरों में सभी विजेट्स को रखना सुनिश्चित करें (बस उन विज़िटर की दृश्यता बदलें जिन्हें आपको "GONE" देखने के लिए आवश्यक नहीं है)। –

+0

बहुत बहुत धन्यवाद। लेकिन वास्तव में मुझे अभी मेरी टिप्पणी से एहसास हुआ, मेरा मतलब था कि आपने मुझे अन्य विचार दिए हैं .. मुझे वास्तव में यह एक प्रश्न के रूप में नहीं था, लेकिन यह खुशी हुई, क्योंकि मैं दृश्य दृश्यता विकल्प का उपयोग करने के बारे में भूल गया था। :) – irobotxxx

7

साथ ही आप अपने टुकड़ा की onConfigurationChanged समारोह अधिभावी द्वारा उन्मुखीकरण परिवर्तन को नियंत्रित कर सकते हैं।

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 

     super.onConfigurationChanged(newConfig); 
     int currentOrientation = getResources().getConfiguration().orientation; 

     if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){ 
      Log.v("TAG","Landscape !!!"); 
     } 
     else { 
      Log.v("TAG","Portrait !!!"); 
     } 
    } 
संबंधित मुद्दे