我想要实现的场景:
- 使用两个框架容器加载活动(用于项目列表和详细信息)。
- 在应用启动时,在 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 重叠!为什么?