私が達成しようとしているシナリオ:
- 2つのフレームコンテナを使用したアクティビティの読み込み(アイテムのリストと詳細)。
- アプリの起動時に、listFrameにlistFragmentを追加し、detailsFrameコンテナーにいくつかの初期infoFragmentを追加します。
- 各詳細トランザクションをバックスタックに追加せずにリストアイテムをナビゲートします(infoFragmentのみをスタックに保持したい)。
- ユーザーが戻るボタン(戻る)を押すとすぐに、起動時に追加された最初のinfoFragmentにフォールバックします。
- シーケンシャルバックナビゲーションが許可されない場合、アプリは終了します。
私のコード:
protected override void OnCreate(Bundle savedInstanceState)
{
...
var listFrag = new ListFragment();
var infoFrag = new InfoFragment();
var trans = FragmentManager.BeginTransaction();
trans.Add(Resource.Id.listFrame, listFrag);
trans.Add(Resource.Id.detailsFrame, infoFrag);
trans.Commit();
...
}
public void OnItemSelected(int id)
{
var detailsFrag = DetailFragment.NewInstance(id);
var trans = FragmentManager.BeginTransaction();
trans.Replace(Resource.Id.detailsFrame, detailsFrag);
if (FragmentManager.BackStackEntryCount == 0)
{
trans.AddToBackStack(null);
}
trans.Commit();
}
私の問題:
戻るボタンが押された後、infoFragは前のdetailFragとオーバーラップします!なんで?