Saya menggunakan pustaka Kompatibilitas Android untuk mengimplementasikan fragmen dan telah memperluas sampel tata letak sehingga fragmen berisi tombol yang melepaskan fragmen lain.
Di panel pilihan di sebelah kiri saya memiliki 5 item yang dipilih - A B C D E
.
Setiap memuat fragmen (melalui FragmentTransaction:replace
) di panel detail -a b c d e
Sekarang saya telah memperluas fragmen e
berisi tombol yang memuat fragmen lain e1
juga di panel rincian. Saya telah melakukan ini pada e
metode onClick fragmen sebagai berikut:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.details_frag, newFrag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Jika saya membuat pilihan berikut:
E - e - e1 - D - E
Kemudian fragmen e
ada di panel detail. Ini baik dan apa yang saya inginkan. Namun, jika saya menekan back
tombol pada saat ini tidak ada artinya. Saya harus mengklik dua kali karena e1
masih di tumpukan. Selanjutnya setelah mengklik sekitar saya mendapat pengecualian pointer nol di onCreateView:
Untuk 'memecahkan' masalah ini saya menambahkan yang berikut setiap kali A B C D E
dipilih:
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
Hanya ingin tahu apakah ini solusi yang tepat atau apakah saya harus melakukan sesuatu yang berbeda?