2012-01-04 13 views
12

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

हालांकि, एक अभिविन्यास परिवर्तन बग को ठीक करते समय मैंने दीवार के खिलाफ भाग लिया है। काम करने के लिए मेरे टुकड़े के लिए इसे एक दृश्य तक पहुंच की आवश्यकता है, जिसमें इसकी गतिविधि शामिल है, मुझे यह जानने की कोशिश कर रहा है कि गतिविधि & फ्रैगमेंट लाइफसाइक्लर्स कैसे इंटरैक्ट करते हैं।

मैं अपने क्रियाएँ करने के लिए एक टुकड़ा जोड़ रहा देखने यह onCreate() विधि है में:

// Only add a fragment once, as after it's been added it cannot be replaced (Even though there is a .replace() method. Which is a massive gaping hole in fragments as a technology if you ask me) 
if(savedInstanceState == null) { 
    MainMenuFragment menu= new MainMenuFragment(); 
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
    transaction.replace(R.id.menuFrame, menu); 
    transaction.commit(); 
} 

इस गतिविधि-> टुकड़ा जीवनचक्र के लिए अग्रणी:

01-04 15:17:27.226: W/SinglePaneActivity 0: onCreate() 
01-04 15:17:27.378: W/MainMenuFragment 0: onAttach() to SinglePaneActivity 0 
01-04 15:17:27.378: W/MainMenuFragment 0: onCreate() 
01-04 15:17:27.453: W/MainMenuFragment 0: onActivityCreated() 
01-04 15:17:27.476: W/MainMenuFragment 0: onStart() 
01-04 15:17:27.476: W/SinglePaneActivity 0: onStart() 
01-04 15:17:27.476: W/SinglePaneActivity 0: onResume() 
01-04 15:17:27.476: W/MainMenuFragment 0: onResume() 

एक उन्मुखीकरण परिवर्तन तथापि पर प्रकाश डाला गया है कि इस isn आमतौर पर मामला नहीं है, एक टुकड़े onCreate() विधि को इसके मूल क्रियाकलाप onCreate() के बाद नहीं कहा जाता है। पहले गतिविधि भी बना दिया गया है वास्तव में, एक टुकड़ा के onAttach() के पहले जीवन चक्र कॉल होता है (null एक तर्क के रूप पारित हो जाता है):

01-04 15:10:49.589: W/MainMenuFragment 0: onPause() 
01-04 15:10:49.589: W/SinglePaneActivity 0: onPause() 
01-04 15:10:49.589: W/MainMenuFragment 0: onStop() 
01-04 15:10:49.589: W/SinglePaneActivity 0: onStop() 
01-04 15:10:49.589: W/MainMenuFragment 0: onDestroyView() 
01-04 15:10:49.589: W/MainMenuFragment 0: onDestroy() 
01-04 15:10:49.589: W/MainMenuFragment 0: onDetach() 
01-04 15:10:49.609: W/SinglePaneActivity 0: onDestroy() 
01-04 15:10:49.617: W/MainMenuFragment 1: onAttach() to null 
01-04 15:10:49.617: W/MainMenuFragment 1: onCreate() 
01-04 15:10:49.617: W/SinglePaneActivity 1: onCreate() 
01-04 15:10:49.890: W/MainMenuFragment 1: onActivityCreated() 
01-04 15:10:49.917: W/MainMenuFragment 1: onStart() 
01-04 15:10:49.917: W/SinglePaneActivity 1: onStart() 
01-04 15:10:49.921: W/SinglePaneActivity 1: onResume() 
01-04 15:10:49.921: W/MainMenuFragment 1: onResume() 

मैं बिल्कुल पता नहीं क्यों इस घटनेवाला रहा है। क्या कोई भी Fragment.onAttach() पर गतिविधि को शामिल करने से पहले किसी भी प्रकाश को बुलाया जा सकता है?

फ्रैगमेंट्स जो मुझे मिल गया है, जिनकी अपेक्षा की गई गतिविधि (यूआई इंटरैक्शन तक) तक पहुंच की आवश्यकता नहीं है।

उत्तर

11

अरे,

01-04 15:46:23.175: W/MainMenuFragment 0: onAttach() to SinglePaneActivity 0 
01-04 15:46:23.179: W/MainMenuFragment 0: onCreate() 
01-04 15:46:23.246: W/MainMenuFragment 0: onActivityCreated() with Activity SinglePaneActivity 0 
01-04 15:46:23.269: W/MainMenuFragment 0: onStart() 
01-04 15:46:23.269: W/SinglePaneActivity 0: onStart() 

क्यों बिल्ली वहाँ एक onAttach() विधि मुझे पता नहीं है। खासकर जब से एक गतिविधि है "संलग्नक" होता है।

मुझे जिस विधि की आवश्यकता थी वह onActivityCreated() था जो Fragment lifecycle events के "निर्माण" सेट में अंतिम कॉल के रूप में होता है।

+0

कृपया मेरी मदद करें http://stackoverflow.com/questions/12331787/save-fragment-objects – user4o01

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