2013-02-08 28 views
6

आवेदन में कई गतिविधियां हो सकती हैं और आखिरी लॉन्च गतिविधि स्टैक के शीर्ष पर रहती है और इसे वापस दबाकर वर्तमान गतिविधि को समाप्त कर देती है। मेरे पास गतिविधि का अनुक्रम है और यहां प्रवाह है ..विशेष गतिविधि के सभी उदाहरण

अगर हम ए, बी है, सी (1), डी, सी (2) ... गतिविधि सी (1) और सी (2) गतिविधि सी के दो विभिन्न उदाहरण है, जबकि आवेदन नेविगेट चलाए जाते हैं इसलिए गतिविधि की सभी घटनाओं को साफ़ करने के लिए आवश्यक है और परिणाम सी (2) को समाप्त करना चाहिए, मुझे इन स्टैक ए, बी, डी के साथ छोड़ा जाना चाहिए था। मुझे क्या करना चाहिए ।

छोटा सा भूत मैं सी रखना चाहते हैं (1) ढेर में जिंदा जब तक जब तक कि मैं खत्म सी (2) के रूप में मैं नहीं बल्कि इन उदाहरणों बनाने की तुलना में नया कार्य ध्वज के साथ सी शुरू कर दिया है सकते हैं, लेकिन इन उदाहरण के अलग यूआई और काम है।

निम्नलिखित दृष्टिकोण अनुकूल नहीं हैं।

पहले

@Override 
public void onBackPressed(){ 
    super.onBackPressed(); 
    Intent intent = new Intent(C(2).this , D.class);  
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    startActivity(intent); 
} 

इस ढेर से सभी गतिविधियां और फिर से लॉन्च गतिविधि

दूसरा

साफ हो जाएगा सिंगलटन कक्षा में गतिविधि पर नज़र रखें और फिर आवश्यक प्रवाह को दोबारा लॉन्च , यह कितनी बार कार्य करेगा जब कई गतिविधियां शुरू की जाएंगी।

तो मैंने सोचा कि वहाँ कि समस्या का समाधान होगा पैकेज प्रबंधक या अन्य का उपयोग कर कुछ समाधान होना चाहिए, समाधान

+0

आप एक मिला ऐसा करने का तरीका? – Uma

उत्तर

1

सराहना कर रहे हैं मैं एक तरह से सी 1 मैन्युअल गतिविधि बंद करने के लिए जब गतिविधि सी 2 परिष्करण पता नहीं है।

हालांकि आप गतिविधि सी 1 का ख्याल यह फिर से शुरू पर है में इस तरह से ले सकते हैं -

1 - आपके आवेदन वर्ग में एक ध्वज सेट करें:

public static boolean IsClosingActivities = false; 

यह मान C2 द्वारा सेट किया जा सकता "सही" गतिविधि सी 2 के "खत्म" से ठीक पहले होता है।

और उस बिंदु पर "झूठी" सेट करें जहां आप एक नई गतिविधि सी के लिए प्रारंभिकता कॉल करेंगे। (माना जाता है कि गतिविधि सी के नए उदाहरण बाद में एप्लिकेशन में बनाए जा सकते हैं)।

2 - सी कार्यान्वयन में फिर से शुरू पर:

@Override 
    protected void onResume() {  
     super.onResume(); 
     if (YourApplication.IsClosingActivities) { 
       this.finish(); 
     } 
    } 

इस तरह - जब उपयोगकर्ता डी से वापस नेविगेट करता है - सी 1 में ही खत्म हो जाएगा और वह बी

पर भेज दिया जाएगा
+0

मैं इसे आज़मा दूंगा और आपको बता दूंगा .. –

+0

मेरे पास समान स्थिति है, और मैन्युअल रूप से ऐसा करने का एकमात्र तरीका मुझे मिला। आप इसमें जवाब देख सकते हैं: http: // stackoverflow।कॉम/प्रश्न/1449 9 034/कैसे-टू-फिनिश-ए-एक्टिविटी-एंड-रिटर्न-टू-ए-वैरिएड-लोकेशन - अगर यह आपके लिए काम करता है तो जवाब स्वीकार करें :) –

+1

क्या यह काम करता है? यदि ऐसा है - उत्तर के रूप में चिह्नित करें। –