Saya memiliki 2 kegiatan: Utama dan Daftar.
Dari Utama Anda dapat membuka Daftar; dari Daftar Anda dapat membuka Utama.
Aku ingin itu sehingga setiap pembukaan Daftar tidak tidak bisa disimpan ke dalam 'sejarah'. Jadi, menekan kembali dari Utama tidak dapat kembali ke Daftar.
Apa itu mungkin?
android
back-stack
realtebo
sumber
sumber
finish()
segera setelahnyastartActivity(...)
. Dengan begitu, jika pengguna menekan KEMBALI dari 'utama' tidak akan ada yang kembali.Jawaban:
Saat memulai daftar Anda
Activity
, setelIntent
benderanya seperti ini:The
FLAG_ACTIVITY_NO_HISTORY
bendera menjaga baruActivity
dari yang ditambahkan ke tumpukan sejarah.NB: Seperti yang @Sam tunjukkan, Anda dapat menggunakan
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
sebagai gantinya. Tidak ada perbedaan fungsional.sumber
Intent
bendera yang menyatakan "hanya menambah sejarah jika tidak kembali keActivity
asalnya".setFlags()
dengangetFlags()
bukanIntent.addFlags()
?Di file manifes tambahkan:
ke aktivitas yang tidak ingin Anda simpan di tumpukan.
sumber
Gunakan tugas baru dengan membersihkan. Ini berfungsi dalam kasus saya ketika opsi lain tidak.
Hapus seluruh tumpukan riwayat dan mulai aktivitas baru di Android
sumber
Tampaknya, jika Anda memanggil finish () pada aktivitas Anda tepat setelah Anda membuka yang lain, aktivitas yang sudah selesai akan dihapus dari tumpukan.
sebagai contoh:
sumber
Dalam kasus khusus saya
FLAG_ACTIVITY_NO_HISTORY
tidak berhasil. Tidak ada yang berhasilFLAG_ACTIVITY_NEW_TASK
atauFLAG_ACTIVITY_CLEAR_TASK
sendirian.Namun
FLAG_ACTIVITY_NEW_TASK
danFLAG_ACTIVITY_CLEAR_TASK
bersama-sama berhasil.sumber
Jawaban terlambat, tetapi menambah kedalaman jawaban lain. Semuanya bermuara pada apa yang Anda inginkan terjadi dengan aktivitas lain yang dimulai dari aktivitas itu
Opsi 1 - Hanya aktivitas ini yang seharusnya tidak memiliki riwayat aktivitas panggilan
Kemudian lakukan saja:
Opsi 2 - Semua aktivitas yang dimulai dari aktivitas spesifik tersebut tidak boleh memiliki riwayat
Kemudian tambahkan manifes aktivitas panggilan:
Tetapi jika Anda ingin memiliki riwayat dalam aktivitas baru, Anda harus menghapus bendera secara manual:
Harapan yang menjelaskan jawaban lain :)
sumber
Hanya ingin menambahkan cara untuk melakukan ini di Kotlin:
sumber
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
Coba FLAG_ACTIVITY_CLEAR_TOP jika aktivitas sudah berjalan:
sumber
tambahkan bendera
FLAG_ACTIVITY_NEW_TASK
keIntent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
sumber
Bisakah Anda tidak menimpa tombol kembali pada aktivitas tertentu untuk menghentikan fungsionalitas 'kembali'?
sumber
Activity
bukanlah praktik yang baik.OnBackPressed
untuk itu.