2012-12-03 28 views
13

जब मैं Camera इरादा शुरू करता हूं, मैंने देखा है onActivityResultfragment जीवन चक्र में पहले कहा जाता है।कब टुकड़े की जीवनशैली के संबंध में बुलाया जाता है सक्रियता परिणाम?

मैंने यह भी देखा कि onActivityResult को onStart के बाद बुलाया जाता है।

लेकिन यहां अजीब हिस्सा है: मेरे पास परिवर्तनीय फ़ाइल यूआर == "कुछ छवि पथ" है। यह चर

  • ऑनस्टार्ट में नहीं है। onActivityResult
  • में
  • शून्य नहीं NULL फिर onResume
  • में

देख Logcat

12-03 14:39:42.418: D/Fragment1(29220): onStart fileUri: file:///mnt/sdcard/OPS_IMAGES/IMG_20121203_143933.jpg 
12-03 14:39:42.463: W/PhoneWindow(29220): Previously focused view reported id 2131034140 during save, but can't be found during restore. 
12-03 14:39:42.463: D/Fragment1(29220): onActivityResult fileUri is NULL!!! 
12-03 14:39:42.468: D/Fragment1(29220): onResume fileUri: file:///mnt/sdcard/OPS_IMAGES/IMG_20121203_143933.jpg 

सबसे बुरा हिस्सा है, यह केवल समय की 50% होता है। ActivityResult पर एक और 50% फ़ाइल के बिना किसी भी समस्या का उपयोग कर सकते हैं ...

मुझे इसे कैसे डिबग करना चाहिए?

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

नोट 2: मैं पुराने एपीआई संस्करणों पर टुकड़ों का समर्थन करने के लिए Google समर्थन लाइब्रेरी का उपयोग कर रहा हूं।

+0

आपको लगता है कि समस्या को हल करने का प्रबंधन किया? – aProgrammer

+2

क्या यह संभव है कि वे एक ही 'Fragment1' कक्षा के अलग-अलग उदाहरण हैं? एक प्रति-उदाहरण पहचानकर्ता मुद्रित करने के लिए लॉग में 'System.identityHashCode (this) 'जोड़ें – Xiao

उत्तर

1

यह ऐसा क्षेत्र नहीं है जहां मैं टंकण कर रहा हूं या मेरे पास कोई समस्या है, लेकिन यदि आपका चर किसी भी कारण से दिखाई नहीं दे रहा है ... क्या आपने मूल्य को संदर्भित करने के लिए एक अलग प्रकार का उपयोग करने का प्रयास किया है ?

मेरा सुझाव साझा किए गए संदर्भ चर का उपयोग करने और संपादक में मूल्य को सहेजने और उसे वापस खींचने का प्रयास करना होगा। यह सबसे अच्छा समाधान नहीं हो सकता है लेकिन इस पल के लिए एक काम हो सकता है।

मुझे लॉगकैट से एक ही त्रुटि संदेश था, जिस तरह से मैंने आपकी पोस्ट में ठोकर खाई।

"01-27 11:13:42.899: W/PhoneWindow(1591): Previously focused view reported id 16908862 during save, but can't be found during restore." 

तरह से मैं ठीक करने के लिए मेरी समस्या मेरी "खाली निर्माता" नहीं मेरी टुकड़ा फिर से instansiateing रहा था सक्षम था। खंड में मेरे पास केवल 1 चर 'आईडी' है जो मेरी गतिविधि पर वापस आ जाता है जब उपयोगकर्ता अपने चयन के साथ कोई आइटम चुनता है। मैंने बस अपने सामान्य कन्स्ट्रक्टर को पास किए गए मानों के साथ कॉल करके अपने टुकड़े को दोबारा शुरू किया।

उदाहरण के लिए।

public UIDialogFragmentVolume() { 
    this(ID); 
} 

public UIDialogFragmentVolume(int typeID) { 
    ID = typeID; 
} 

मुझे आशा है कि इससे आपको अपनी समस्या को निर्धारित करने और ठीक करने में मदद मिलेगी।

2

अपने मूल सवाल का जवाब करने के लिए, यहाँ जीवनचक्र के आदेश कॉलबैक है

12-09 16:38:41.800 10227-10227/org.Test I/Fragment: ## OnStart() 
12-09 16:38:41.820 10227-10227/org.Test I/Fragment: ## OnActivityResult() 
12-09 16:38:41.821 10227-10227/org.Test I/Fragment: ## OnResume()