मैं एंड्रॉइड ऐप पर कुछ सरल करना चाहता हूं। पिछली गतिविधि में वापस जाना कैसे संभव है।
मुझे पिछली गतिविधि पर वापस जाने के लिए किस कोड की आवश्यकता होगी
मैं एंड्रॉइड ऐप पर कुछ सरल करना चाहता हूं। पिछली गतिविधि में वापस जाना कैसे संभव है।
मुझे पिछली गतिविधि पर वापस जाने के लिए किस कोड की आवश्यकता होगी
जवाबों:
एंड्रॉइड गतिविधियों को गतिविधि स्टैक में संग्रहीत किया जाता है। पिछली गतिविधि में वापस जाने का मतलब दो चीजें हो सकती हैं।
आपने startActivityForResult के साथ एक और गतिविधि से नई गतिविधि खोली । उस स्थिति में आप अपने कोड से फिनिशएक्टिविटी () फ़ंक्शन को कॉल कर सकते हैं और यह आपको पिछली गतिविधि पर वापस ले जाएगा।
गतिविधि स्टैक का ध्यान रखें। जब भी आप एक इरादे के साथ एक नई गतिविधि शुरू करते हैं तो आप एक इरादे के ध्वज को निर्दिष्ट कर सकते हैं जैसे FLAG_ACTIVITY_REORDER_TO_FRONT
या FLAG_ACTIVITY_PREVIOUS_IS_TOP
। आप अपने अनुप्रयोग में गतिविधियों के बीच फेरबदल करने के लिए इसका उपयोग कर सकते हैं। हालांकि उन्हें ज्यादा इस्तेमाल नहीं किया। यहां के झंडे देखें: http://developer.android.com/reference/android/content/Intent.html
जैसा कि टिप्पणियों में बताया गया है, अगर गतिविधि को खोला जाता है, startActivity()
तो कोई इसे बंद कर सकता है finish()
। आप ऊपर बटन का उपयोग करना चाहते हैं तो आप में पकड़ कर सकते हैं कि onOptionsSelected(MenuItem item)
के खिलाफ आइटम आईडी की जाँच के साथ विधि android.R.id.home
के विपरीत R.id.home
के रूप में टिप्पणी में उल्लेख किया है।
कोशिश करो Activity#finish()
। यह कमोबेश बैक बटन डिफॉल्ट रूप से होता है।
this.finish();
#
एक संकेत है कि है finish()
गतिविधि वर्ग के एक गैर स्थैतिक विधि है। यह मान्य जावा नहीं है, लेकिन यह समझाने में मदद करता है कि कोई कैसे विधि का उपयोग कर सकता है।
.
, यानी:Activity.someStaticMethod()
बस क्लिक खत्म () पर लिखें । यह आपको पिछली गतिविधि पर ले जाएगा।
सिर्फ यह
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
यह आपको इसके ढेर को रखने और ढेर से इसके बाद की सभी गतिविधियों को साफ करने की पिछली गतिविधि में ले जाएगा।
उदाहरण के लिए, यदि स्टैक A-> B-> C-> D है और आप B को इस ध्वज से प्रारंभ करते हैं, तो स्टैक A-> B होगा
क्या आप बैक बटन व्यवहार को नियंत्रित करना चाहते हैं? आप दो तरीकों में से एक के माध्यम से बैक बटन (एक विशिष्ट गतिविधि पर जाने के लिए) को ओवरराइड कर सकते हैं।
Android 1.6 और उससे नीचे के लिए:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// do something on back.
return true;
}
return super.onKeyDown(keyCode, event);
}
या यदि आप केवल Android 2.0 या अधिक समर्थन कर रहे हैं:
@Override
public void onBackPressed() {
// do something on back.
return;
}
अधिक जानकारी के लिए: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
वर्तमान गतिविधि समाप्त करने के लिए या onBackPressed द्वारा वापस जाने के लिए इन विधियों को कॉल करें
finish();
या
onBackPressed();
यदि आप केवल पिछले गतिविधि उपयोग में जाना चाहते हैं तो जाना चाहते हैं
finish();
या
onBackPressed();
यदि आप दूसरी गतिविधि पर या उससे नीचे जाना चाहते हैं, तो निम्न का उपयोग करें:
intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Bundle is optional
Bundle bundle = new Bundle();
bundle.putString("MyValue1", val1);
intent.putExtras(bundle);
//end Bundle
startActivity(intent);
इसे अपने onCLick () विधि में जोड़ें, यह आपकी पिछली गतिविधि पर वापस जाएगा
समाप्त();
या आप इसका उपयोग कर सकते हैं। इसने मेरे लिए पूरी तरह से काम किया
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
अगर आपके पास गतिविधि माता-पिता के साथ AndroidManifest.xml फ़ाइल सही ढंग से सेटअप है, तो आप उपयोग कर सकते हैं:
NavUtils.navigateUpFromSameTask(this);
जहाँ यह आपकी बाल गतिविधि है।
यह कोशिश करें कि आपको बैक बटन दबाना है
finish();
onBackPressed();
आप स्पष्ट रूप से कॉल कर सकते हैं onBackPressed
सबसे आसान तरीका है
देखें पिछली गतिविधि पर वापस जाओ जानकारी के लिए
एक ही समस्या है और
finish(); OR super.onBackPressed();
मेरे लिए ठीक काम किया, दोनों ने एक ही काम किया, लेकिन कोई भाग्य नहीं था return
आशय का उपयोग करके दूसरी गतिविधि शुरू करें (या तो उपयोग करें startActivity
याstartActivityForResult
अपनी आवश्यकताओं के अनुसार)। अब जब उपयोगकर्ता बैक बटन दबाएगा, तो शीर्ष पर वर्तमान गतिविधि बंद हो जाएगी और पिछले दिखाया जाएगा।
अब कहते हैं कि आपके पास दो गतिविधियाँ हैं, एक उपयोगकर्ता के लिए कुछ सेटिंग्स का चयन करने के लिए, जैसे भाषा, देश आदि, और इसे चुनने के बाद, उपयोगकर्ता लॉगिन फॉर्म (उदाहरण के लिए) पर जाने के लिए नेक्स्ट बटन पर क्लिक करता है। अब यदि लॉगिन असफल है, तो उपयोगकर्ता लॉगिन गतिविधि पर होगा, अगर लॉगिन सफल होता है तो क्या होगा?
यदि लॉगिन सफल होता है, तो आपको एक और गतिविधि शुरू करनी होगी। इसका मतलब है कि एक तीसरी गतिविधि शुरू की जाएगी, और अभी भी दो गतिविधियाँ चल रही हैं। इस मामले में, इसका उपयोग करना अच्छा होगा startActivityForResult
। जब लॉगिन सफल होता है, तो पहली गतिविधि पर वापस डेटा भेजें और लॉगिन गतिविधि बंद करें। अब जब डेटा प्राप्त होता है, तो तीसरी गतिविधि शुरू करें और फिनिश का उपयोग करके पहली गतिविधि को बंद करें।
@Override
public void onBackPressed() {
super.onBackPressed();
}
और यदि आप बटन पर क्लिक करना चाहते हैं तो वापस जाएं
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
आपकी पिछली गतिविधि पर वापस जाने के लिए कुछ मामले हैं:
केस 1: यदि आप परिणाम को अपनी पिछली गतिविधि में वापस लेना चाहते हैं तो ActivA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
केस 2: एक्टिवा -> FBHelperActivity ----> एक्टिवा
ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivity(intent);
FBHelperActivity.java
after getting of result call finish();
By this way your second activity will finish and because
you did not call finish() in your first activity then
automatic first activity is in back ground, will visible.
उसके बाद आपके पास वर्तमान गतिविधि से पिछली गतिविधि तक वापस जाने के दो तरीके हैं:
बस कॉल करें: finish()
बटन क्लिक श्रोता के तहत, या सिस्टम बैक बटन का उपयोग करके बैक करने के लिए निम्न विधि को ओवरराइड करें:
@Override
public void onBackPressed() {
super.onBackPressed();
}
सभी उल्लिखित उत्तरों के अलावा, उनका अभी भी ऐसा करने का एक वैकल्पिक तरीका है, मान लें कि आपके पास दो वर्ग हैं, वर्ग ए और वर्ग बी।
क्लास ए में आपने कुछ गतिविधियाँ की हैं जैसे चेकबॉक्स सेलेक्ट, कुछ डेटा और आशय का प्रिंट बी। विधि या स्रोत कोड डाउनलोड यह प्रदर्शित करने के लिए
या
http://developer.android.com/reference/android/content/Intent.html
बस, पहली गतिविधि में यह कोशिश करें
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
अपनी दूसरी गतिविधि में
@Override
public void onBackPressed() {
this.finish();
}