2013-03-12 19 views
23

में मौजूद रहने पर मैं चरणों का एक बहुत बाद एक Activity_1 है गतिविधि फिर से शुरू, कहते हैं किबजाय शुरू पहले से ही वापस ढेर

Activity_2>Activity_3 .... कुछ Activity_n में मैं Activity_1 और से संबंधित कुछ डेटा को बदलने

Intent intent = new Intent(Activity_n.this, Activity_1.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

सामग्री को रीफ्रेश करने के लिए इसे कॉल करें। लेकिन बाद में मैं Activity_1 पर वापस जा सकता हूं जहां मैंने शुरू किया, जिसमें पुराना डेटा है।

इसके बजाय मैं उपरोक्त कोड का उपयोग करके शुरुआती Activity_1 के onResume() कहलाता हूं। ए, बी, सी, डी डी startActivity() एक आशय यह है कि के घटक को हल करता है के साथ कॉल करता है: या उचित करें

FLAG_ACTIVITY_CLEAR_TOP

एक कार्य गतिविधियों से मिलकर विचार करें गतिविधि बी, तो सी और डी समाप्त हो जाएगा और बी दिया आशय प्राप्त करते हैं, ढेर में जिसके परिणामस्वरूप अब किया जा रहा है: एक, बी

'wha कि डॉक्स कहते हैं, लेकिन मुझे नहीं मिल रहा है।

उत्तर

32

आप इस दो लाइनों को जोड़ने और गतिविधि के अंदर अपने मैनिफ़ेस्ट फ़ाइल में कोशिश

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

इस लिखें

<activity 
    android:name=".SettingsActivity" 
    android:launchMode="singleInstance" 
    android:screenOrientation="portrait" > 
</activity> 

"singleTask" और "singleInstance" गतिविधियों केवल एक काम शुरू कर सकते हैं कर सकते हैं। वे हमेशा गतिविधि ढेर की जड़ पर रहते हैं। इसके अलावा, डिवाइस एक समय में गतिविधि का केवल एक उदाहरण रख सकता है - केवल एक ऐसा कार्य।

आप SingleTask या SingleInstance उपयोग कर सकते हैं

"singleTask" - प्रणाली एक नया कार्य और मार्गों इसे करने के लिए आशय की जड़ में गतिविधि पैदा करता है। हालांकि, यदि गतिविधि का एक उदाहरण पहले से मौजूद है, तो सिस्टम एक नया निर्माण करने के बजाए, ऑन-न्यूइन्टेंट() विधि पर कॉल के माध्यम से मौजूदा उदाहरण के इरादे को रूट करता है।

"सिंगल इंस्टेंस" - "सिंगल टास्क" के समान, सिवाय इसके कि सिस्टम किसी भी अन्य गतिविधियों को उदाहरण रखने वाले कार्य में लॉन्च नहीं करता है। गतिविधि हमेशा अपने कार्य का एकल और एकमात्र सदस्य होता है। backstack से http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT

+0

लेकिन यह एक ** फ्रैगमेंट ** है जिसका उपयोग मैं कर रहा हूं। अब तक मैं ** फ्रैगमेंट ** के 'ऑनस्यूम() 'का उपयोग कर रहा था। जिसमें 'ऑन न्यूइन्टेंट() 'की तरह कुछ भी शामिल नहीं है। लेकिन पूरे बैक स्टैक को साफ़ करने और एक नई ** गतिविधि ** –

+0

देखें, मैंने देखा है कि मैंने दो लाइनों को जोड़ा है, आप इस तरह से कोशिश कर सकते हैं – Nirali

+0

धन्यवाद वह काम किया। –

7
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

जाएँ संदर्भ लें। xml और सामान्य Intent के साथ गतिविधि शुरू करें।

4

फिर से शुरू Activity अगर मौजूद है या एक नया एक नहीं तो

android:launchMode="singleTask" 

को अपने ऐप्लिकेशन के AndroidManifest में यह पंक्ति जोड़ बनाएँ:

इस लिंक http://developer.android.com/guide/topics/manifest/activity-element.html

+0

मुझे यह कहां लिखना चाहिए? – GabrielOshiro

+0

manifest.xml – AhmedNTS

+2

में आपको इसे अपने उत्तर में जोड़ना चाहिए, नहीं? – GabrielOshiro

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