Saya memiliki aktivitas utama, bahwa ketika saya mengklik tombol, memulai aktivitas baru, saya menggunakan kode berikut untuk melakukannya:
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
Kode di atas dijalankan dari aktivitas utama.
Sekarang dalam aktivitas baru saya yang disebut dengan aktivitas utama, saya memiliki tombol kembali. Ketika saya mengklik tombol kembali ini saya ingin aktivitas baru saya ditutup dan itu harus kembali ke aktivitas utama yang asli.
Saya telah mencoba menelepon super.finish()
dan adil finish()
(dari aktivitas baru) tetapi ini kemudian menutup seluruh aplikasi saya (termasuk aktivitas utama saya).
Bagaimana saya bisa menutup aktivitas yang saat ini sedang dalam fokus, dan kemudian kembali ke aktivitas utama?
Diedit
Fakta bahwa tombol kembali ponsel saya juga menutup seluruh aplikasi saya, membuat saya berpikir bahwa saya telah memulai aktivitas kedua secara salah?
OK saya sudah mencari,
Saya membuat Aktivitas Pengaturan yang menggunakan kode manifes yang sama dan kode yang sama untuk Memulai aktivitas.
Untuk aktivitas Pengaturan ketika saya menekan tombol kembali, itu kembali ke aktivitas Utama.
Dengan aktivitas yang disebutkan di atas dalam pertanyaan utama, ia hanya keluar dari seluruh aplikasi saya.
Jadi masalahnya bukan pada kode untuk menyelesaikan aktivitas tetapi aktivitas itu sendiri.
sumber
Jawaban:
Saya pikir Anda memanggil
finish()
metodeMainActivity
sebelum memulaiSettingsActivity
.Skenario yang telah Anda gambarkan akan terjadi dalam dua cara berikut:
ANTARA
Anda telah mengatur
android:noHistory = "true"
untukMainActivity
di dalamAndroidManifest.xml
yang menyebabkanMainActivity
untukfinish
secara otomatis pada menekan tombol kembali.ATAU
Sebelum beralih ke 'SettingsActivity' Anda, Anda telah disebut
finish()
di AndaMainActivity
, yang membunuh itu. Ketika Anda menekan tombol kembali, karena tidak ada aktivitas lain yang diatur dalam tumpukan untuk pop, itu kembali ke layar utama.sumber
Anda dapat kembali ke aktivitas sebelumnya dengan hanya memanggil selesai () di aktivitas yang sedang Anda jalani. Catat kode apa pun setelah panggilan selesai () akan dijalankan - Anda bisa melakukan pengembalian setelah menelepon selesai () untuk memperbaikinya.
Jika Anda ingin mengembalikan hasil ke aktivitas satu maka saat memulai aktivitas kedua Anda perlu:
Di dalam aktivitas yang dipanggil, Anda bisa mendapatkan Intent dari parameter onCreate () atau digunakan
Untuk mengatur mengembalikan hasil ke aktivitas satu maka dalam aktivitas dua lakukan
Jika Anda tidak memiliki niat untuk kembali, katakan saja
Jika aktivitas memiliki hasil yang buruk, Anda dapat menggunakan Activity.RESULT_CANCELED (ini digunakan secara default). Kemudian dalam aktivitas yang Anda lakukan
Untuk menyelesaikan aktivitas dua gunakan metode yang sama dengan finish () seperti yang dijelaskan di atas dengan hasil Anda sudah ditetapkan.
sumber
Ketika Anda mengklik tombol Anda, Anda dapat membuatnya memanggil:
sumber
jika Anda menggunakan fragmen Anda harus menggunakan
jika Anda menggunakan satu aktivitas yang dapat Anda gunakan
sumber
coba kode ini alih-alih
finish
:onBackPressed();
sumber
Anda membuat ini terlalu sulit. Jika saya mengerti apa yang Anda coba lakukan dengan benar, tombol 'back' bawaan dan Android itu sendiri akan melakukan semua pekerjaan untuk Anda: http://developer.android.com/guide/components/tasks-and-back- stack.html
Juga, menerapkan tombol "kembali" kustom melanggar Pedoman Kualitas Aplikasi Inti UX-N1: http://developer.android.com/distribute/googleplay/quality/core.html
sumber
sumber
Ini menutup seluruh aplikasi:
sumber
Saya percaya aktivitas kedua Anda mungkin tidak terkait dengan aktivitas utama Anda sebagai aktivitas anak-anak. Periksa
AndroidManifest.xml
file Anda dan lihat apakah<activity>
entri untuk aktivitas anak Anda menyertakanandroid:parentActivityName
atribut. Seharusnya terlihat seperti ini:sumber
Hanya saja jangan panggil
finish()
AndaMainActivity
maka ini menghilangkan kebutuhan untuk Mengganti AndaonBackPressed()
di AndaSecondActivity
kecuali Anda melakukan hal-hal lain dalam fungsi itu. Jika anda merasa "perlu" untuk tombol kembali ini maka Anda hanya dapat memanggilfinish()
diSecondActivity
dan yang akan membawa Anda ke AndaMainActivity
selama Anda belum disebutfinish()
di atasnyasumber
Activity
atau selalu kembali keMainActivity
? Juga, jika Anda kehabisan memori denganBitmaps
maka Anda harus membaca bagian Dokumen ini . Itu membantu sayaSaya tidak tahu apakah ini berguna atau tidak, tetapi saya sedang berjuang dengan masalah yang sama dan saya menemukan cara yang cukup mudah, hanya dengan variabel boolean global dan tindakan onResume (). Dalam kasus saya, Aktivitas C saya jika diklik pada tombol tertentu itu akan memicu finish () dari Kegiatan B!
Activity_A -> Activity_B -> Activity_C
Activity_A (terbuka secara normal Activity_B)
Activity_B (pada beberapa tombol klik buka Activity_C):
Jadi, setiap kali saya mengklik tombol pada Kegiatan C itu akan melakukan fungsi "onResume ()" dari Kegiatan B dan kembali ke Kegiatan A.
sumber
Cobalah ini berfungsi baik pada tombol kembali bilah alat sebagai tombol kembali perangkat keras .
sumber
android:parentActivityName=".MainActivity"
untuk yang kedua. Kode ini menangani tombol Home / Back di toolbat dan baru saja menyelesaikan aktivitas saat ini kembali ke yang sebelumnya di stack. Terima kasih.Selesai menutup seluruh aplikasi, ini adalah sesuatu yang saya benci dalam pengembangan Android tidak selesai itu baik-baik saja tetapi mereka tidak mengikuti sintaks ok yang mereka miliki
Kenapa tidak
sumber
Kami menghadapi situasi yang sangat mirip.
Respons "on back press" salah
Saya telah memeriksa semua jawaban yang diposting di atas dan tidak ada satupun yang berfungsi. Sintaks Java untuk transisi antara Aktivitas 2 dan Kegiatan 3 ditinjau benar.
Baru dari pengkodean saat memanggil aplikasi pihak ke-3. oleh suatu Aktivitas. Kami memutuskan untuk menyelidiki sudut konfigurasi - pada akhirnya memungkinkan kami untuk mengidentifikasi akar penyebab masalah.
Cakupan : Konfigurasi Aktivitas 2 (penelepon).
Penyebab Root :
Solusi :
Rupanya pada masalah "on back press" ini singleInstance mempertimbangkan Kegiatan yang dipanggil dalam satu contoh dengan Kegiatan pemanggilan, sedangkan singleTask akan memungkinkan untuk Kegiatan yang dipanggil memiliki identitas mereka sendiri yang cukup untuk menekan tombol tekan berfungsi agar berfungsi sebagaimana mestinya.
sumber
Coba metode ini ..
sumber
mungkin saja Anda menelepon selesai (); dalam acara klik tombol sehingga kegiatan utama ditutup setelah Anda mengklik tombol dan ketika Anda kembali dari kegiatan berikutnya aplikasi keluar karena kegiatan utama sudah ditutup dan tidak ada aktivitas aktif.
sumber
di metode onCreate aktivitas Anda menulis kode berikut.
Kemudian ganti metode onOptionsItem yang dipilih dari aktivitas Anda sebagai berikut
Dan Anda baik untuk pergi.
sumber
Anda harus menggunakan ini di MainActivity Anda
Bendera akan memulai beberapa tugas yang akan menjaga MainActivity Anda, saat Anda selesai menelepon, ia akan mematikan aktivitas lain dan membuat Anda kembali ke MainActivity
sumber