2014-06-19 7 views
6

पर एंड्रॉइड फ्रैगमेंट एनीमेशन दोबारा दोहराया गया है मेरी गतिविधि में मैंने निम्नलिखित कोड का उपयोग करके खंड जोड़ा है।ओरिएंटेशन चेंज

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.setCustomAnimations(R.anim.right_to_left_in, R.anim.right_to_left_exit,R.anim.left_to_right_in,R.anim.left_to_right_exit); 
DetailsFragment newFragment = DetailsFragment.newInstance(); 
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment"); 
ft.commit(); 

टुकड़ा प्रवेश कर रहा है, बाहर निकलने, एनिमेशन ठीक से साथ पॉपिंग। लेकिन जब मैं डिवाइस को ओरिएंट करता हूं, तो फ्रैगमेंट मैनेजर उसी एनिमेशन के साथ खंड जोड़ने की कोशिश कर रहा है। यह बहुत अजीब लगता है। जब उपयोगकर्ता डिवाइस को डिवाइस करता है तो मैं एनीमेशन नहीं चाहता हूं।

मैनिफेस्ट में onConfigChanges='orientation' जोड़ना नहीं चाहता क्योंकि मैं अभिविन्यास पर खंड के लेआउट डिज़ाइन को बदलना चाहता हूं।

उत्तर

0

एंड्रॉइड अभिविन्यास परिवर्तन के मामले में स्वचालित रूप से एक गतिविधि में मौजूदा खंड को फिर से जोड़ता है। तो आपको इसे मैन्युअल रूप से करने की ज़रूरत नहीं है। आप अशक्त के लिए गतिविधि के onCreate विधि में savedInstanceState चर की जाँच करें और यदि यह शून्य है केवल मामले में एनीमेशन के साथ एक टुकड़ा की जगह ले सकती:

if (savedInstanceState == null) { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.setCustomAnimations(R.anim.right_to_left_in, R.anim.right_to_left_exit,R.anim.left_to_right_in,R.anim.left_to_right_exit); 
    DetailsFragment newFragment = DetailsFragment.newInstance(); 
    ft.replace(R.id.details_fragment_container, newFragment, "detailFragment"); 
    ft.commit(); 
} 
+0

आपके उत्तर के लिए धन्यवाद। मेरी गतिविधि में पहले से ही यह तर्क है। मैंने फिर से टुकड़ा कभी नहीं जोड़ा। जब खंड प्रबंधक अभिविन्यास पर टुकड़े को दोबारा जोड़ने की कोशिश करता है, तो यह उन एनिमेशनों को लागू करता है जो पहले ही लेनदेन में संग्रहीत हैं। (आईई जिसे मैंने खंड में जोड़ा था) –

3

एक ही रास्ता मैं से बच सकते हैं इस के लिए गया था बरकरार नहीं टुकड़ा उदाहरण। आपके DetailsFragment की onCreate विधि setRetainInstance(false);

+0

उत्तर के लिए धन्यवाद। मैं जांच और अपडेट करूँगा! –

+0

कुडोस! यह काम कर रहा है! मैं setRetainInstance (झूठी) सेट करते समय अन्य दुष्प्रभावों पर जांच कर रहा हूं (क्या कुछ भी है !?); –

+1

समस्या यह है कि टुकड़ा बरकरार नहीं रखा जाएगा - यहां और पढ़ें: http://stackoverflow.com/a/11318942/667202 – AdamVe

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