🌀 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 adalah LifecycleOwner (seperti AppCompatActivity).

  • 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
    

  • 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

Popular posts from this blog

3 Langkah Duplikat Objek/Photo Pada Photoshop

Motherboard Blank

Mencari SHA-1 Android Studio Tanpa Perlu Membuat Ulang 2025