【发布时间】:2013-01-10 23:46:28
【问题描述】:
我想要实现的场景:
- 使用两个框架容器加载活动(用于项目列表和详细信息)。
- 在应用启动时,在 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 重叠!为什么?
【问题讨论】:
-
这个答案在这里:- stackoverflow.com/a/28115271/9969285 是最简单和最好的解决方法!在我的情况下,它适用于多个片段(可以在第一个片段之后以任何顺序启动),并且后按将始终返回到第一个创建的片段。非常重要的一点要记住,不要在创建第一个 Fragment 时添加到 backstack,而是在添加所有其他 Fragment 时添加到 backstack。由于声誉点较少,我无法直接评论或投票给该答案。
-
其简单的一行代码转到此链接并检查 stackoverflow.com/questions/14971780/…>
标签: android