Misalkan saya ingin mengganti fragmen saat ini di beberapa tampilan kontainer dengan yang lain. Apakah lebih baik menggunakan ...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, newFragment, null);
ft.commit();
... atau yang berikut ini, dengan show and hide?
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.hide(oldFragment);
ft.show(newFragment);
ft.commit();
Apakah salah satu cara melakukan ini lebih efisien? Tidak dapat menemukan banyak informasi tentang kapan harus menggunakan metode ini, atau bagaimana pengaruhnya terhadap siklus proses fragmen yang terlibat. Terima kasih!
android
android-fragments
Robert Karl
sumber
sumber
Jawaban:
Anda harus mempertimbangkan apa yang akan Anda lakukan dengan fragmen untuk memutuskan jalan mana yang harus diikuti. Jika Anda menggunakan FragmentTransaction untuk menyembunyikan fragmen, maka fragmen tersebut masih bisa berada dalam status berjalan dari siklus prosesnya, tetapi UI-nya telah dilepaskan dari jendela sehingga tidak lagi terlihat. Jadi secara teknis Anda masih bisa berinteraksi dengan fragmen dan memasang kembali UI-nya nanti. Jika Anda mengganti fragmen, Anda sebenarnya menariknya keluar dari container dan itu akan melalui semua peristiwa pembongkaran dalam siklus proses (onPause, onStop, dll) dan jika karena alasan tertentu Anda memerlukan fragmen itu lagi, Anda harus melakukannya masukkan kembali ke dalam wadah dan biarkan berjalan melalui semua inisialisasi lagi.
Jika ada kemungkinan besar Anda akan membutuhkan fragmen itu lagi, maka sembunyikan saja karena ini adalah operasi yang lebih murah untuk menggambar ulang tata letaknya daripada menginisialisasi ulang sepenuhnya.
sumber
hide()
danshow()
menghematnya! Terima kasih untuk ini!Anda pada dasarnya menjawab diri sendiri. Jika Anda ingin mengganti (jadi fragment lama tidak lagi diperlukan) gunakan
replace()
jika Anda ingin menyembunyikannya sementara maka lakukanhide()
.sumber
Saya menggunakan metode hide / Show dalam aktivitas saya dengan 4 fragmen yang memecahkan solusi saya tetapi beberapa waktu secara acak ketika saya menampilkan dialog saya itu memberikan jendela pengecualian token buruk ketika saya menggunakan metode tambah dan ganti maka pengecualian token buruk tidak terjadi jadi saya pikir tampilkan / Metode sembunyikan tidak sempurna
sumber