Saya ingin tahu apakah ini sebenarnya bug di API Android:
Saya memiliki pengaturan seperti ini:
┌----┬---------┐
| | |
| 1 | 2 |
| |┌-------┐|
| || ||
| || 3 ||
└----┴┴-------┴┘
- Adalah menu yang memuat fragmen # 2 (Layar pencarian) di panel kanan.
- Adalah layar pencarian yang berisi fragmen # 3, yang merupakan daftar hasil.
- Daftar hasil digunakan di beberapa tempat (termasuk sebagai fragmen tingkat tinggi yang berfungsi dengan haknya sendiri).
Fungsionalitas ini berfungsi dengan baik pada telepon (Di mana 1 & 2 dan 3 adalah ActivityFragment
s).
Namun, ketika saya menggunakan kode ini:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment frag = new FragmentNumber2();
if(toLoad != null) frag.setArguments(toLoad);
transaction.replace(R.id.rightPane, frag);
transaction.commit();
Di mana R.id.leftPane
dan R.id.rightPane
berada <fragment>
dalam tata letak linier horizontal.
Ini adalah pemahaman saya bahwa kode di atas menghapus fragmen yang penduduk dan kemudian menggantinya dengan fragmen baru. Brilliant ... Jelas bukan itu yang terjadi karena ketika kode ini berjalan kedua kalinya Anda mendapatkan pengecualian berikut:
07-27 15:22:55.940: ERROR/AndroidRuntime(8105): Caused by: java.lang.IllegalArgumentException: Binary XML file line #57: Duplicate id 0x7f080024, tag null, or parent id 0x0 with another fragment for FragmentNumber3
Ini disebabkan karena wadah untuk FragmentNumber3 telah digandakan dan tidak lagi memiliki ID unik. Fragmen awal belum dihancurkan (?) Sebelum yang baru ditambahkan (dalam pikiran saya itu berarti belum diganti ).
Dapatkah seseorang memberi tahu saya jika ini mungkin ( jawaban ini menunjukkan tidak) atau ini bug?