🌀 Migrasi dari onBackPressed() ke OnBackPressedDispatcher AndroidX SDK
🌀 Migrasi dari onBackPressed()
ke OnBackPressedDispatcher
AndroidX
Sejak Android 13 (API level 33), Google memperkenalkan sistem gesture navigasi yang lebih konsisten dan terintegrasi. Salah satu dampaknya adalah metode onBackPressed()
tidak lagi dipanggil secara andal oleh sistem ketika pengguna melakukan gesture back, terutama di perangkat modern dengan gesture navigation.
Untuk memastikan kompatibilitas ke belakang dan perilaku yang konsisten, Android merekomendasikan penggunaan OnBackPressedDispatcher
dari AndroidX.
❌ Masalah dengan onBackPressed()
Pada versi Android sebelumnya, onBackPressed()
di Activity
digunakan untuk menangani aksi ketika tombol back ditekan. Namun, pada perangkat dengan gesture navigation (tanpa tombol fisik), sistem tidak selalu memanggil metode ini.
✅ Solusi: OnBackPressedDispatcher
AndroidX menyediakan API baru yang disebut OnBackPressedDispatcher
, yang memungkinkan kita mendaftarkan callback khusus yang akan dijalankan saat pengguna menekan tombol back atau melakukan gesture back.
💻 Contoh Migrasi: Activity
🔹 Sebelumnya (Deprecated):
@Override
public void onBackPressed() {
// logika custom ketika tombol back ditekan
showExitDialog();
}
🔹 Sekarang (Rekomendasi AndroidX):
Di dalam metode onCreate()
:
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
// logika custom ketika back ditekan atau gesture dilakukan
showExitDialog();
}
});
Keterangan:
this
adalahLifecycleOwner
(sepertiAppCompatActivity
).
true
artinya callback ini aktif (enabled).
📦 Dependensi yang Dibutuhkan
Pastikan kamu menggunakan AndroidX dan sudah menambahkan dependensi berikut di build.gradle
(module level):
implementation 'androidx.activity:activity:1.6.0' // atau versi terbaru
🧩 Untuk Fragment
Jika kamu ingin menangani tombol back di dalam Fragment
, gunakan requireActivity().getOnBackPressedDispatcher()
dan tambahkan callback di dalam onViewCreated()
:
requireActivity().getOnBackPressedDispatcher().addCallback(
getViewLifecycleOwner(),
new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
// logika ketika back ditekan di Fragment
navController.popBackStack(); // contoh
}
}
);
📌 Tips Tambahan
-
Kamu bisa menonaktifkan callback dengan
setEnabled(false)
jika dibutuhkan. -
Cocok digunakan untuk aplikasi yang ingin menampilkan konfirmasi saat keluar, menyimpan data, atau navigasi kompleks.
Penggunaan OnBackPressedDispatcher
dari AndroidX bisa digunakan mulai dari SDK minimal (minSdk) 14, karena library AndroidX mendukung backward compatibility.
📌 Rinciannya:
-
Class OnBackPressedDispatcher
diperkenalkan lewat library:
androidx.activity:activity:1.0.0
-
Compatibilitas: Mendukung minSdkVersion 14 ke atas
-
Namun, disarankan untuk menggunakan versi yang lebih baru seperti:
implementation 'androidx.activity:activity:1.6.0' // atau lebih baru
Class OnBackPressedDispatcher
diperkenalkan lewat library:
androidx.activity:activity:1.0.0
Compatibilitas: Mendukung minSdkVersion 14 ke atas
Namun, disarankan untuk menggunakan versi yang lebih baru seperti:
implementation 'androidx.activity:activity:1.6.0' // atau lebih baru
Minimal SDK: 14
-
Versi disarankan: androidx.activity:activity:1.6.0
atau lebih baru
-
Bisa digunakan di semua AppCompatActivity atau Fragment berbasis AndroidX
Minimal SDK: 14
Versi disarankan: androidx.activity:activity:1.6.0
atau lebih baru
Bisa digunakan di semua AppCompatActivity atau Fragment berbasis AndroidX
Jika aplikasi kamu sudah pakai AndroidX (yang umumnya default sejak Android Studio 3.4+), maka kamu aman untuk migrasi ke OnBackPressedDispatcher
.
Butuh saya bantu buat tabel SDK atau kode build.gradle minimalnya juga?
🏁 Kesimpulan
Perubahan sistem gesture Android membuat penggunaan onBackPressed()
menjadi kurang andal. Dengan OnBackPressedDispatcher
, kamu bisa menangani aksi back dengan cara yang lebih modern, fleksibel, dan kompatibel ke berbagai versi Android.
Comments
Post a Comment
Kritik & Saran Anda, Kemajuan Blog Ini... ^_^