【问题标题】:Android: Dialog Fragment and Backstack problemsAndroid:对话框片段和 Backstack 问题
【发布时间】:2013-09-11 19:03:35
【问题描述】:

假设我有以下片段:

片段1 片段2 对话片段 片段3 片段4

假设我去以下Fragments,每个fragmetn都被添加到back stack:

Fragment1 -> Fragment2 -> DialogFragment -> Fragment3 -> Fragment4

如果我点击 BACK 按钮,这通常会转到 Fragment3,但会显示 DialogFragment

这是我使用的片段交易:

片段1 -> 片段2

FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
ft.replace(R.id.mainContentHolder, new Fragment2(), "Fragment2");
ft.addToBackStack(null);
ft.commit();

Fragment2 -> DialogFragment

FragmentTransaction ft2 = getFragmentManager().beginTransaction();
ft2.setCustomAnimations(R.anim.flipp_in,R.anim.flipp_static);
ft2.add(R.id.mainContentHolder, new DialogFragment(), "DialogFragment");
ft2.addToBackStack(null);   
ft2.commit();
ft2.hide(Fragment1.this);

DialogFragment -> Fragment3

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.replace(R.id.mainContentHolder, new Fragment3(), "Fragment3");
ft.addToBackStack(null);
ft.commit();

Fragment3 -> Fragment4

FragmentTransaction ft = getFragmentManager().beginTransaction();                                           
ft.replace(R.id.mainContentHolder, new Fragment4(), "Fragment4");
ft.addToBackStack(null);                        
ft.commit();

同样的问题是,当我在 Fragment4 中并单击 BACK 按钮时,会显示 DialogFragment 而不是 Fragment3。

【问题讨论】:

    标签: android android-fragments back-stack fragmenttransaction


    【解决方案1】:

    在显示 DialogFragment 时,请在 Fragments 中使用 Activity 的片段管理器,以避免从回栈中恢复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多