Android uygulamasında basit bir şey yapmak istiyorum. Önceki bir etkinliğe geri dönmek nasıl mümkün.
Önceki etkinliğe geri dönmek için hangi koda ihtiyacım var?
Android uygulamasında basit bir şey yapmak istiyorum. Önceki bir etkinliğe geri dönmek nasıl mümkün.
Önceki etkinliğe geri dönmek için hangi koda ihtiyacım var?
Yanıtlar:
Android etkinlikleri, etkinlik yığınında depolanır. Önceki bir etkinliğe geri dönmek iki anlama gelebilir.
Yeni etkinliği startActivityForResult ile başka bir etkinlikten açtınız . Bu durumda kodunuzdan finishActivity () işlevini çağırabilirsiniz ve sizi önceki etkinliğe geri götürür.
Etkinlik yığınını takip edin. Bir niyetle yeni bir etkinlik başlattığınızda FLAG_ACTIVITY_REORDER_TO_FRONT
veya gibi bir hedef bayrağı belirtebilirsiniz FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Bunu, uygulamanızdaki etkinlikler arasında karıştırmak için kullanabilirsiniz. Yine de çok fazla kullanmadım. Buradaki bayraklara bir göz atın: http://developer.android.com/reference/android/content/Intent.html
Yorumlarda belirtildiği gibi, etkinlik ile açılırsa, startActivity()
o kişi ile kapanabilir finish()
. Yukarı düğmesini kullanmak isterseniz onOptionsSelected(MenuItem item)
, öğe kimliğini yorumlarda belirtilenden android.R.id.home
farklı R.id.home
olarak kontrol ederek yöntemde yakalayabilirsiniz .
Deneyin Activity#finish()
. Bu, geri düğmesinin varsayılan olarak yaptığı şeydir.
this.finish();
#
Bir göstergesidir finish()
Etkinlik sınıfının bir statik olmayan bir yöntemdir. Geçerli bir Java değil, ancak yöntemi nasıl kullanabileceğinizi açıklamaya yardımcı olur.
.
, yani:Activity.someStaticMethod()
Sadece tıklama bitirmek () yazmak . Sizi bir önceki Etkinliğe götürür.
Sadece bu
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bu, yığını tutarak önceki bir etkinliğe götürür ve yığından sonraki tüm etkinlikleri temizler.
Örneğin, yığın A-> B-> C-> D ise ve bu bayrakla B'yi başlatırsanız, yığın A-> B olacaktır.
Geri düğmesi davranışının kontrolünü ele almak istiyor musunuz? İki yöntemden birini kullanarak geri düğmesini (belirli bir etkinliğe gitmek için) geçersiz kılabilirsiniz.
Android 1.6 ve önceki sürümleri için:
@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);
}
Veya yalnızca Android 2.0 veya üstünü destekliyorsanız:
@Override
public void onBackPressed() {
// do something on back.
return;
}
Daha fazla ayrıntı için: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Geçerli etkinliği bitirmek veya onBackPressed tarafından geri gitmek için bu yöntemi çağırmanız yeterlidir.
finish();
VEYA
onBackPressed();
gitmek istiyorsanız sadece önceki etkinlik kullanımına gitmek istiyorsanız
finish();
VEYA
onBackPressed();
aşağıdakileri kullanan ikinci bir etkinliğe veya daha altına gitmek istiyorsanız:
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);
Bunu onCLick () yönteminize ekleyin, önceki etkinliğinize geri dönecektir
bitiş();
veya Bunu kullanabilirsiniz. Benim için mükemmel çalıştı
@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 dosyasını etkinlik üst öğesiyle doğru bir şekilde ayarladıysanız, şunları kullanabilirsiniz:
NavUtils.navigateUpFromSameTask(this);
Bu sizin çocuk aktiviteniz.
Bu, geri düğmesine basmanız gerektiği gibi davranın
finish();
onBackPressed();
Açıkça çağrı olabilir onBackPressed
en kolay yolu
bakın önceki etkinliğe git geri detayları için
İkinci etkinliği niyetini kullanarak başlatın (kullanın startActivity
veya startActivityForResult
gereksinimlerinize göre). Şimdi kullanıcı geri düğmesine bastığında, üstteki geçerli etkinlik kapatılacak ve önceki etkinlik gösterilecektir.
Şimdi diyelim ki kullanıcı, dil, ülke vb. Gibi bazı ayarları seçmek için iki etkinliğiniz olduğunu ve bunu seçtikten sonra kullanıcı, giriş formuna (örneğin) gitmek için İleri düğmesine tıklar. Oturum açma başarısız olursa, kullanıcı oturum açma etkinliğinde olur, oturum açma başarılı olursa ne olur?
Giriş başarılı olursa, başka bir etkinlik başlatmalısınız. Bu, üçüncü bir etkinliğin başlatılacağı ve halen devam eden iki etkinliğin olduğu anlamına gelir. Bu durumda, kullanmak iyi olacaktır startActivityForResult
. Oturum açma başarılı olduğunda, Tamam verilerini ilk etkinliğe geri gönderin ve oturum açma etkinliğini kapatın. Şimdi veri alındığında, üçüncü etkinliği başlatın ve bitirmeyi kullanarak ilk etkinliği kapatın.
@Override
public void onBackPressed() {
super.onBackPressed();
}
ve düğme tıklayın istiyorsanız geri dönün
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
Önceki etkinliğinize geri dönmek için birkaç durum vardır:
Durum 1: Bir önceki faaliyetinize geri dönmek istiyorsanız ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
Durum 2: ActivityA -> FBHelperActivity ----> ActivityA
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.
Bundan sonra, mevcut etkinlikten önceki etkinliğe geri dönmenin iki yolu vardır:
Sadece arayın: finish()
düğme tıklama dinleyicisi altında veya Sistem geri düğmesini kullanarak geri dönmek için aşağıdaki yöntemi geçersiz kılın:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Bahsedilen tüm cevapların yanı sıra, hala bunu yapmanın alternatif bir yolu, diyelim ki A ve B sınıfı olmak üzere iki sınıfınız var.
A Sınıfı, onay kutusu seçimi, bazı veriler yazdırılmış ve B sınıfına niyet gibi bazı aktiviteler gerçekleştirdiniz. B Sınıfı, A sınıfına birden fazla değer iletmek ve A sınıfının önceki durumunu korumak istiyorsunuz, kullanabilirsiniz, bu alternatifi deneyin Bunu göstermek için yöntem veya kaynak kodunu indirin
veya
http://developer.android.com/reference/android/content/Intent.html
Bunu ilk aktivitede deneyin
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
İkinci etkinliğinizde
@Override
public void onBackPressed() {
this.finish();
}