【发布时间】:2014-04-02 08:33:44
【问题描述】:
我想要一个片段,它提供了创建某些东西的能力。 之后我想在另一个片段中展示新的“someting”。按下设备上的后退按钮后,我想返回 MainFragment 而不是 CreateFragment(这很好用)。但在那之后 ShowFragment 仍然可见。
这是我的代码:
在我的MainActivity 中,我有一个MainFragment,它有一个“创建”按钮。
点击按钮后,我会加载一个“创建”片段。
fragmentManager.beginTransaction()
.replace(R.id.container, CreateFragment.newInstance())
.addToBackStack("Create")
.commit();
如果用户输入了一些详细信息,他会点击“确定”按钮。这会在 MainActivity 上触发以下内容。
fragmentManager.beginTransaction()
.replace(R.id.container, ShowFragment.newInstance(id))
.commit();
到目前为止一切顺利,但问题来了。
如果用户点击设备上的后退按钮,他将返回 MainFragment 但ShowFragment 仍然可见(在MainFragment 下)。
更新
会发生这样的事情:
MainFragment > CreateFragment > ShowFragment > (BACK 按钮) > MainFragment (ShowFragment 在后面)
【问题讨论】:
-
只需删除行
.addToBackStack("Create"),您将不会再次重定向到CreateFragment。它显示CreateFragment,因为您已将该片段添加到堆栈中。 -
我没有回到 CreateFragment。我回到 MainFragment (这就是我想要的)。但 ShowFragment 仍然可见。
-
什么是
idin lineShowFragment.newInstance(id)? -
这只是新“某物”的 id(一个参数)
-
手动从 R.id.container 中删除怎么样?