【发布时间】:2014-12-28 21:35:53
【问题描述】:
我目前正在使用一个ActionBarActivity 和多个Fragments 构建Android (14 ListFragment 和MapFragment,它们在单个@987654326 中交换@视图。
ActionBarActivity 自动替换/提交片段 A。然后,当用户点击按钮时,托管 Activity 替换/提交新的不同片段 B。我的目标是让用户在按下后立即返回片段 A后退按钮。
现在有一些代码。
主活动
public class MainActivity extends ActionBarActivity implements StopFragment.OnFragmentInteractionListener,
StopItemFragment.OnFragmentInteractionListener {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fragmentManager = getFragmentManager();
fragmentManager.enableDebugLogging(true);
...
if (fragmentManager.findFragmentById(R.id.content_frame) == null) {
StopItemFragment list = StopItemFragment.newInstance(null); //A - extends ListFragment
fragmentManager.beginTransaction()
.replace(R.id.content_frame, list)
.addToBackStack(null)
.commit();
}
...
@Override
public void onFragmentInteraction(String id) {
selectItem(Integer.parseInt(id));
}
private void selectItem(int position) {
StopFragment fragment = StopFragment.newInstance(null, null); //B - extends Fragment
...
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
...
}
}
问题
即使调用addToBackStack(),当我在fragment B时,我也无法回到fragment A。MainActivity被直接关闭。
然而,我试图自己管理后台堆栈,但没有运气。我可以看到片段在堆栈上,但是如果我调用popBackStackImmediate(),片段 A 会弹出并且片段事务不会执行。 (第一次后按没有任何反应,第二次活动关闭)
我还附上了 FragmentManager logcat:
http://pastebin.com/hFLHprL8
【问题讨论】:
标签: android android-fragments back-stack