我有片段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!
答案 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()。