在popBackStack()上面的片段

时间:2016-10-28 04:53:34

标签: java android android-fragments

我有片段A. 点击某个按钮后,我在片段A上方添加片段B.

    FragmentB fragmentB= new FragmentB ();
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.add(R.id.content_home, fragmentB, "fragmentB");
    fragmentTransaction.hide(FragmentA.this);
    fragmentTransaction.addToBackStack(FragmentA.class.getName());
    fragmentTransaction.commit();

我在片段B中执行了一些操作。完成我的工作后,我的popBackStack()当前片段。

  FragmentManager   fragmentManager = getFragmentManager();
  fragmentManager.popBackStack();

现在我片段A.因为我使用" ADD片段"我的所有值都保存在edittext中。

我想知道,当我回到Fragment A时会调用哪个方法, 是onResume()..? 我必须登录onResume,好像不会onResume!

2 个答案:

答案 0 :(得分:0)

而不是fragmentTransaction.add(R.id.content_home, fragmentB, "fragmentB"); 使用

fragmentTransaction.replace(R.id.content_home, fragmentB, "fragmentB");

参考链接Difference between add(), replace(), and addToBackStack()

尝试以下代码

FragmentB fragmentB= new FragmentB ();
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.content_home, fragmentB, "fragmentB");
    fragmentTransaction.hide(FragmentA.this);
    fragmentTransaction.addToBackStack(FragmentA.class.getName());
    fragmentTransaction.commit();

答案 1 :(得分:0)

根据片段文档,您的片段将在按下后恢复。 https://developer.android.com/guide/components/fragments.html

  

如果你在删除片段时调用addToBackStack(),   然后片段停止并在用户导航时恢复   回来。

但你说,

  

我必须登录onResume,好像不会去onResume!

然后您的代码可能会遇到一些问题:
  - 如果你这样做

fragmentTransaction.hide(FragmentA.this);

然后您可能需要使用FragmentTransaction.show(Fragment),以便再次显示FragmentA。然后它将转到onResume()。