Saya ingin melakukan sesuatu yang sederhana di aplikasi android. Bagaimana mungkin kembali ke aktivitas sebelumnya.
Kode apa yang saya perlukan untuk kembali ke aktivitas sebelumnya
Saya ingin melakukan sesuatu yang sederhana di aplikasi android. Bagaimana mungkin kembali ke aktivitas sebelumnya.
Kode apa yang saya perlukan untuk kembali ke aktivitas sebelumnya
Jawaban:
Aktivitas Android disimpan dalam tumpukan aktivitas. Kembali ke aktivitas sebelumnya bisa berarti dua hal.
Anda membuka aktivitas baru dari aktivitas lain dengan startActivityForResult . Dalam hal ini Anda bisa memanggil fungsi finishActivity () dari kode Anda dan itu akan membawa Anda kembali ke aktivitas sebelumnya.
Melacak tumpukan aktivitas. Setiap kali Anda memulai aktivitas baru dengan maksud, Anda dapat menentukan bendera maksud seperti FLAG_ACTIVITY_REORDER_TO_FRONT
atau FLAG_ACTIVITY_PREVIOUS_IS_TOP
. Anda dapat menggunakan ini untuk mengacak antara aktivitas dalam aplikasi Anda. Belum banyak menggunakannya. Lihat bendera di sini: http://developer.android.com/reference/android/content/Intent.html
Seperti disebutkan dalam komentar, jika aktivitas dibuka startActivity()
maka seseorang dapat menutupnya finish()
. Jika Anda ingin menggunakan tombol Up Anda dapat menangkap bahwa dalam onOptionsSelected(MenuItem item)
metode dengan memeriksa ID item terhadap android.R.id.home
tidak seperti R.id.home
yang disebutkan di komentar.
Coba Activity#finish()
. Ini kurang lebih apa yang dilakukan tombol kembali secara default.
this.finish();
#
merupakan indikator bahwa finish()
adalah metode non-statis dari kelas Activity. Ini bukan Java yang valid, tetapi ini membantu menjelaskan bagaimana seseorang dapat menggunakan metode ini.
.
, yaitu:Activity.someStaticMethod()
Cukup tulis pada klik selesai () . Ini akan membawa Anda ke Aktivitas sebelumnya.
Hanya ini
super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Ini akan membawa Anda ke aktivitas sebelumnya dengan menyimpan tumpukannya dan menghapus semua aktivitas setelah tumpukan.
Misalnya, jika tumpukan adalah A-> B-> C-> D dan Anda mulai B dengan flag ini, tumpukan akan menjadi A-> B
Apakah Anda ingin mengendalikan perilaku tombol kembali? Anda dapat mengganti tombol kembali (untuk pergi ke aktivitas tertentu) melalui salah satu dari dua metode.
Untuk Android 1.6 dan di bawah ini:
@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);
}
Atau jika Anda hanya mendukung Android 2.0 atau lebih tinggi:
@Override
public void onBackPressed() {
// do something on back.
return;
}
Untuk detail lebih lanjut: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Cukup panggil metode ini untuk menyelesaikan aktivitas saat ini atau untuk kembali dengan onBackPressed
finish();
ATAU
onBackPressed();
jika Anda ingin pergi ke hanya ingin pergi menggunakan aktivitas sebelumnya
finish();
ATAU
onBackPressed();
jika Anda ingin pergi ke aktivitas kedua atau di bawah yang menggunakan berikut:
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);
Tambahkan ini dalam metode onCLick () Anda, itu akan kembali ke aktivitas Anda sebelumnya
selesai();
atau Anda bisa menggunakan ini. Ini bekerja dengan baik untuk saya
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if ( id == android.R.id.home ) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Jika Anda telah menyiapkan file AndroidManifest.xml dengan induk aktivitas dengan benar, Anda dapat menggunakan:
NavUtils.navigateUpFromSameTask(this);
Di mana ini adalah aktivitas anak Anda.
Coba ini bertindak karena Anda harus menekan tombol kembali
finish();
onBackPressed();
Anda dapat secara eksplisit menelepon onBackPressed
adalah cara termudah.
Lihat Kembali ke aktivitas sebelumnya untuk detail
Punya masalah yang sama dan
finish(); OR super.onBackPressed();
bekerja dengan baik untuk saya, keduanya bekerja sama, tetapi tidak berhasil return
Mulai aktivitas kedua menggunakan niat (baik menggunakan startActivity
atau startActivityForResult
sesuai dengan kebutuhan Anda). Sekarang ketika pengguna menekan tombol kembali, aktivitas saat ini di atas akan ditutup dan sebelumnya akan ditampilkan.
Sekarang Katakanlah Anda memiliki dua kegiatan, satu untuk memilih beberapa pengaturan untuk pengguna, seperti bahasa, negara, dll, dan setelah memilihnya, pengguna mengklik tombol Next untuk masuk ke formulir login (misalnya). Sekarang jika login tidak berhasil, maka pengguna akan berada di aktivitas login, bagaimana jika login berhasil?
Jika login berhasil, maka Anda harus memulai aktivitas lain. Ini berarti kegiatan ketiga akan dimulai, dan masih ada dua kegiatan yang berjalan. Dalam hal ini, itu akan baik untuk digunakan startActivityForResult
. Ketika login berhasil, kirim kembali data OK ke aktivitas pertama dan tutup aktivitas login. Sekarang ketika data diterima, maka mulailah aktivitas ketiga dan tutup aktivitas pertama dengan menggunakan selesai.
@Override
public void onBackPressed() {
super.onBackPressed();
}
dan jika Anda ingin tombol klik kembali maka cukup masukkan
bbsubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
Ada beberapa kasus untuk kembali ke aktivitas Anda sebelumnya:
Kasus 1: jika Anda ingin mengembalikan hasil ke aktivitas Anda sebelumnya maka ActivityA.java
Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
startActivityForResult(intent,2);
FBHelperActivity.java
Intent returnIntent = new Intent();
setResult(RESULT_OK, returnIntent);
finish();
Kasus 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.
Setelah itu Anda memiliki dua cara untuk kembali dari aktivitas saat ini ke aktivitas sebelumnya:
Cukup panggil: di finish()
bawah pendengar klik tombol, Atau Override metode berikut untuk kembali menggunakan tombol kembali sistem:
@Override
public void onBackPressed() {
super.onBackPressed();
}
Selain semua jawaban yang disebutkan, mereka masih merupakan cara alternatif untuk melakukan ini, katakanlah Anda memiliki dua kelas, kelas A dan kelas B.
Kelas A Anda telah membuat beberapa aktivitas seperti kotak centang pilih, mencetak beberapa data dan bermaksud ke kelas B. Kelas B, Anda ingin meneruskan beberapa nilai ke kelas A dan mempertahankan status sebelumnya dari kelas A, Anda dapat menggunakan, coba alternatif ini metode atau unduh kode sumber untuk menunjukkan ini
atau
http://developer.android.com/reference/android/content/Intent.html
Coba saja ini, aktivitas pertama
Intent mainIntent = new Intent(Activity1.this, Activity2.class);
this.startActivity(mainIntent);
Dalam aktivitas kedua Anda
@Override
public void onBackPressed() {
this.finish();
}