Saya hanya ingin menambahkan: -
Muncul keluar dari backstack menggunakan yang berikut
fragmentManager.popBackStack ()
hanya tentang menghilangkan fragmen dari transaksi, tidak ada cara untuk menghapus fragmen dari layar. Jadi idealnya, itu mungkin tidak terlihat oleh Anda tetapi mungkin ada dua atau tiga fragmen ditumpuk satu sama lain, dan pada tombol kembali tekan UI mungkin terlihat berantakan, ditumpuk.
Hanya mengambil contoh sederhana: -
Misalkan Anda memiliki fragmentA yang memuat Fragmnet B menggunakan fragmentmanager.replace () dan kemudian kami menambahkanToBackStack, untuk menyimpan transaksi ini. Jadi arusnya adalah: -
LANGKAH 1 -> FragmentA-> FragmentB (kami pindah ke FragmentB, tetapi Fragment A ada di latar belakang, tidak terlihat).
Sekarang Anda melakukan beberapa pekerjaan di fragmentB dan tekan tombol Simpan - yang setelah menyimpan harus kembali ke fragmentA.
LANGKAH 2 -> Saat menyimpan FragmentB, kita kembali ke FragmentA.
LANGKAH 3 -> Jadi kesalahan umum adalah ... dalam Fragmen B, kami akan melakukan fragmen Manager.replace () fragmentB dengan fragmentA.
Tetapi apa yang sebenarnya terjadi, kami memuat Fragment A lagi, menggantikan FragmentB. Jadi sekarang ada dua FragmentA (satu dari LANGKAH-1, dan satu dari LANGKAH-3 ini).
Dua contoh FragmentsA ditumpuk satu sama lain, yang mungkin tidak terlihat, tetapi ada di sana.
Jadi, bahkan jika kita menghapus backstack dengan metode di atas, transaksi itu dihapus tetapi bukan fragmen yang sebenarnya. Jadi idealnya dalam kasus tertentu, dengan menekan tombol simpan Anda hanya perlu kembali ke fragmentA dengan hanya melakukan fm.popBackStack () atau fm.popBackImmediate () .
Jadi perbaiki Step3-> fm.popBackStack () kembali ke fragmentA, yang sudah ada dalam memori.