Bunun aslında Android API'de bir hata olup olmadığını merak ediyorum:
Böyle bir kurulumum var:
┌----┬---------┐
| | |
| 1 | 2 |
| |┌-------┐|
| || ||
| || 3 ||
└----┴┴-------┴┘
- Sağ bölmede 2. parçayı (Bir arama ekranı) yükleyen bir menüdür.
- Bir sonuç listesi olan 3 numaralı parçayı içeren bir arama ekranıdır.
- Sonuç listesi birkaç yerde kullanılır (kendi başına işleyen bir üst düzey parça olarak dahil).
Bu işlevsellik bir telefonda mükemmel şekilde çalışır (1 & 2 ve 3'ün olduğu yerlerde ActivityFragment
).
Ancak, bu kodu kullandığımda:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment frag = new FragmentNumber2();
if(toLoad != null) frag.setArguments(toLoad);
transaction.replace(R.id.rightPane, frag);
transaction.commit();
Nerede R.id.leftPane
ve R.id.rightPane
Hangi <fragment>
yatay doğrusal düzende s.
Anladığım kadarıyla, yukarıdaki kod yerleşik olan parçayı kaldırır ve sonra onu yeni bir parça ile değiştirir. Harika ... Açıkçası böyle olmuyor çünkü bu kod ikinci kez çalıştığında aşağıdaki istisnayı elde edersiniz:
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
Bunun nedeni FragmentNumber3 kabının yinelenmiş olması ve artık benzersiz bir kimliğe sahip olmamasıdır. İlk Parça, yenisi eklenmeden önce (?) Yok edilmedi (?) (Aklımda bu, değiştirilmediği anlamına geliyor ).
Birisi bana bunun mümkün olup olmadığını söyleyebilir mi ( bu cevap öyle olmadığını gösteriyor) veya bir hata mı?