2012-09-13 16 views
14

में गतिविधि फिर से शुरू करें मेरे पास 3 गतिविधियां हैं।एंड्रॉइड

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

startActivity(new Intent(TerceraActiviry.this, Main.class)); 
+0

उपयोग launchMode singleTop – njzk2

+0

singleTop में प्रवेश केवल फिर से बिना चल रहा है, इस कोड को सामने के पास ले जाएगा यदि एक उदाहरण पहले से ही गतिविधि स्टैक के शीर्ष पर है, तो उसी उदाहरण का उपयोग करें, जो इस मामले में – kingraam

उत्तर

39

यदि आपका Activity अभी भी होगा onCreate

Intent openMainActivity= new Intent(TerceraActiviry.this, Main.class)); 
openMainActivity.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivityIfNeeded(openMainActivity, 0); 
+1

धन्यवाद के लिए क्रिएट पर कॉल करेगा। मैं कई घंटों के दौरान इस समाधान की खोज करता हूं। और आप एक मिनट में हल हो गए। –

+0

मुझे लगता है कि पहली पंक्ति में 1 अतिरिक्त ")" है। –

1

आप startActivity के बजाय startActivityForResult:

यह तीसरा गतिविधि के लिए कोड है।

अधिक जानकारी here के लिए एंड्रॉइड देव देखें।

+0

नहीं होगा, मैं सहमत नहीं हूं - यह अभी भी – kingraam

+0

गतिविधि का एक नया उदाहरण बना देगा यदि आप प्रारंभ करने के लिए startActivityForResult का उपयोग करते हैं दूसरी और तीसरी गतिविधियां, आप पहले एक्टि में वापस आ सकते हैं RESULT_OK और कॉलिंग फिनिश() विधि (क्रमशः) को सेट करके vity। पहले से मौजूद मुख्य गतिविधि पर नियंत्रण पारित करके। – Gan

+0

फेयर प्वाइंट - इस सवाल के संदर्भ में ऐसा लगता है कि आप यह सुझाव दे रहे थे कि वह स्टार्ट एक्टिविटी फॉर रिसेट एक्टिविटी फॉर रीट एक्टिविटी फॉर रिसेट के साथ बदलता है, जो – kingraam

2

आपको दिखाई एक खत्म करने के लिए है वापस पिछले गतिविधि प्राप्त करने के लिए, इस का उपयोग करें:

finish(); 

गतिविधि एक परिणाम के लिए शुरू किया गया था, तो आप इस तरह तो एक परिणाम देना चाहिए,:

Intent intent = new Intent(); 
intent.putExtra(KEY_RESPONSE, responseData); 
setResult(RESULT_OK, intent); 
finish(); 

और आप का उपयोग कर फोन करने वाले गतिविधि पर परिणाम को पकड़ने चाहिए:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    switch (requestCode) { 
    // Test for the code you have used to start the Activity 
    } 
} 

आशा है कि यह मदद करता है ,

0

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

Intent intent = new Intent(TerceraActiviry.this, Main.class)); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

यह मुख्य गतिविधि – Gabriel