2013-08-16 10 views
7

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

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

public abstract class ListFragmentBase<I> extends ListFragment implements 
LoaderCallbacks<List<I>> { 

इस विधि मुझे इस वर्ग के भीतर वरीयता गतिविधि को अग्रेषित है:

protected void forwardToPreferences(int currentTab){    
     Intent intent = new Intent(getActivity(), GlobalPreferencesActivity.class); 
     getActivity().startActivityForResult(intent, 10); 
} 

इस विधि के बाद कहा जाता हो जाता है वह यह है कि

इस

वर्ग वरीयता-गतिविधि बनाने है उपरोक्त विधि को कॉल करना, लेकिन मैंने गतिविधि को समाप्त करने के बाद

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
} 

इस वरीयता-गतिविधि है:

public class GlobalPreferencesActivity extends Activity { 

और उस वर्ग आप देख मैं कैसे खत्म विधि कॉल के अंदर:

TextView confirmSettings = (TextView) view.findViewById(R.id.confirm_settings); 
confirmSettings.setTextSize(PreferenceHelper.getSizeHeader(getApplicationContext())); 
    confirmSettings.findViewById(R.id.confirm_settings).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) {  
      if(BaseFragmentActivity.lastActivity != null){ 
       BaseFragmentActivity.lastActivity.onRefreshData(); 
     } 
      ComponentName callingActivity = getCallingActivity(); 
      GlobalPreferencesActivity.this.finish(); 
     } 
    }); 
+0

पोस्ट कोड और लॉगक आउटपुट। – Squonk

+1

मैं एंड्रॉयड जोड़कर अपने विशेष समस्या को ठीक कर सकते हैं: launchMode = "मानक" वरीयता-गतिविधि के लिए AndroidManifest.xml में (जो पहले था - ListFragements तरह - करने के लिए सेट "singleInstance")। लेकिन startActivityForResult का व्यवहार अभी भी मेरे लिए बहुत अजीब है। – richard

+0

क्षमा करें, पहली बार जब मैं कोड जोड़ता हूं, तो मुझे थोड़ी देर लग गई। और अब मुझे सही तरीके से लॉगकैट प्रारूप के लिए पता लगाना है और इसे जोड़ना है। – richard

उत्तर

3

यह Android के

onActivityResult() called prematurely

एक बग है और

Why does result from startActivityForResult come before activity really starts?

मैं कौन-सा संस्करण उपयोग करते हैं और अगर यह हल किया गया है/ठीक किया

+0

धन्यवाद मैं जांच करूंगा अगर वह मेरी मदद करता है, लेकिन यह निश्चित रूप से एक ही समस्या है। स्टैक ओवरफ्लो के संचालन से संबंधित मेरे अनुभवहीन प्रश्नों के लिए खेद है, लेकिन क्या मुझे अपने प्रश्न को अब डुप्लिकेट के रूप में चिह्नित करना है (यदि हां: कैसे)? – richard

+0

@ रिचर्ड कोई समस्या नहीं, चिंता न करें। कम से कम आप पाएंगे कि आप अकेले एक ही परेशानी नहीं हैं ;-)। अगर आपको लगता है कि मैंने जवाब दिया है तो आप मेरे जवाब को मान्य कर सकते हैं ताकि अन्य जान सकें कि समस्या का उत्तर दिया गया है। – HpTerm

7

कृपया सुनिश्चित करें कि गतिविधि अपने बुला AndroidManifest फ़ाइल में singleInstance नहीं है। सुनिश्चित करें कि यह सिंगलटॉप या मानक है।

आशा इस तुम लोगों के लिए भी काम करेंगे

+0

हेललुजाह, काम किया! गंदा बग, एंड्रॉइड 4.3 पर मेरे प्रोजेक्ट में दिखाई देने के लिए कैमरे का उपयोग करके प्रकट होता है। – Pelanes

+0

मेरे पास लॉन्च मोड के रूप में 'सिंगल टास्क' था। यह – Libin

+0

हटाए जाने पर काम करता है यदि प्रश्न में गतिविधि सिस्टम 'सेटिंग्स' गतिविधि है तो क्या होगा? – TheRealChx101

0

onActivityResult, onStart के बाद कहा जाता है,

मूल कारण यह है कि जब खत्म बुला के बिना किसी अन्य गतिविधि के लिए अपनी गतिविधि से अपने कूद। फिर अंतिम गतिविधि ऑनटॉप स्थिति में चला गया।

ऑनस्टॉप के बाद, ऑनस्टार्ट विधि कॉल पर एक्टिविटी रिसेट कहा जाता है।

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