Saat ini saya memiliki Kegiatan yang ketika ditampilkan Pemberitahuan juga akan ditampilkan di bilah Pemberitahuan.
Ini agar ketika Pengguna menekan beranda dan Kegiatan didorong ke latar belakang, mereka dapat kembali ke Aktivitas melalui Pemberitahuan.
Masalah muncul ketika Pengguna menekan tombol kembali, Aktivitas saya dihancurkan tetapi Pemberitahuan tetap karena saya ingin pengguna dapat menekan kembali tetapi masih bisa sampai ke Aktivitas melalui Pemberitahuan. Tetapi ketika seorang USER mencoba ini, saya mendapatkan Null Pointers sebagai upaya untuk memulai aktivitas baru daripada mengembalikan yang lama.
Jadi pada dasarnya saya ingin tombol Kembali untuk bertindak sama persis seperti tombol Home dan di sini adalah bagaimana saya telah mencoba sejauh ini:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("CDA", "onKeyDown Called");
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Log.d("CDA", "onBackPressed Called");
Intent setIntent = new Intent(Intent.ACTION_MAIN);
setIntent.addCategory(Intent.CATEGORY_HOME);
setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(setIntent);
return;
}
Namun kode di atas tampaknya masih memungkinkan Kegiatan saya dihancurkan, Bagaimana saya bisa menghentikan Aktivitas saya dari dihancurkan ketika tombol kembali ditekan?
sumber
, the
<` harus menjadi>
.Jawaban:
Hapus pendengar kunci Anda atau kembali
true
ketika Anda punyaKEY_BACK
.Anda hanya perlu yang berikut ini untuk menangkap tombol kembali (Pastikan untuk tidak memanggil super masuk
onBackPressed()
).Juga, jika Anda berencana untuk menjalankan layanan di latar belakang, pastikan untuk melihat
startForeground()
dan pastikan untuk memiliki pemberitahuan yang sedang berlangsung atau Android akan mematikan layanan Anda jika perlu mengosongkan memori.sumber
Lebih mudah untuk mengimplementasikannya hanya dengan satu baris kode:
sumber
Saya pikir apa yang Anda inginkan bukan untuk menimpa tombol kembali (yang sepertinya bukan ide yang bagus - Android OS mendefinisikan perilaku itu, mengapa mengubahnya?), Tetapi menggunakan Activity Lifecycle dan bertahan pengaturan / data Anda di acara onSaveInstanceState (Bundle) .
Kemudian Anda menggunakan onCreate (Bundle) untuk mendapatkan semuanya dari bundel yang ada dan buat kembali kondisi Anda.
Pertimbangkan kode psuedo di atas untuk mengarahkan Anda ke arah yang benar. Membaca tentang Siklus Hidup Aktivitas akan membantu Anda menentukan cara terbaik untuk mencapai apa yang Anda cari.
sumber
lakukan saja ini ..
mengomentari //super.onBackPressed (); akan melakukan trik
sumber
Coba ini:
sumber
Kalau-kalau Anda ingin menangani perilaku tombol kembali (di bagian bawah telepon) dan tombol beranda (yang di sebelah kiri bilah tindakan), aktivitas kustom yang saya gunakan dalam proyek ini dapat membantu Anda .
Contoh penggunaan dalam aktivitas Anda:
sumber
sumber
Di Kotlin:
Untuk informasi lebih lanjut, Anda dapat memeriksa ini .
Ada juga pertanyaan khusus tentang mengganti tombol kembali di Kotlin.
sumber