これが実際にAndroid APIのバグなのかどうか疑問に思っています。
私はそのような設定をしています:
┌----┬---------┐
| | |
| 1 | 2 |
| |┌-------┐|
| || ||
| || 3 ||
└----┴┴-------┴┘
- 右側のペインにフラグメント#2(検索画面)をロードするメニューです。
- 結果リストであるフラグメント#3を含む検索画面です。
- 結果リストはいくつかの場所で使用されます(それ自体が機能する高レベルのフラグメントとしても含まれます)。
この機能は電話で完全に機能します(1と2および3はActivityFragment
sです)。
ただし、このコードを使用した場合:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment frag = new FragmentNumber2();
if(toLoad != null) frag.setArguments(toLoad);
transaction.replace(R.id.rightPane, frag);
transaction.commit();
水平線形レイアウトのR.id.leftPane
とR.id.rightPane
はどこですか<fragment>
。
上記のコードが常駐しているフラグメントを削除し、それを新しいフラグメントに置き換えることは私の理解です。このコードが2回目に実行されると、次の例外が発生するため、明らかにそうではありません。
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
これは、FragmentNumber3のコンテナが複製され、一意のIDがなくなったために発生します。最初のFragmentは、新しいFragmentが追加される前に破棄されていません(?)(私の考えでは、置き換えられていません)。
これが可能であるか(この答えは不可能であることが示唆されます)、それはバグですか?