如何将数据保存在片段中

时间:2013-12-10 09:09:43

标签: android mobile android-fragments fragmentmanager

我正在使用ViewPager和FragmentManager填充一些EditText并单击下一步按钮继续。但是当我点击上一个按钮返回到最后一个片段时,表单中的信息就会丢失,因为我总是像这样重新实例化每个片段:

 void previousFragment(){

    Fragment newFragment = new RegisterLink_();
    final FragmentManager fm = getActivity().getSupportFragmentManager();
    final FragmentTransaction ft = fm.beginTransaction();

    ft.setCustomAnimations(R.anim.in, R.anim.out);
    ft.replace(R.id.register_upload, newFragment);
    ft.addToBackStack(null);
    ft.commit();
   }
}

有人可以告诉我如何从片段滑动到另一个片段而不会丢失用户插入的信息。谢谢你的帮助,抱歉我的英语不好。

3 个答案:

答案 0 :(得分:2)

当您在片段之间导航时,为了在这种情况下保存数据,您可以执行以下操作

  1. 拥有一个全局变量来保存数据,因此当您导航时仍然有用户输入的数据
  2. 或者在切换片段之前,将数据包装到bundle中并使用setArgument方法传递给下一个片段 你可以在下一个片段中通过getArgument检索它。
  3. 因此,当您保存数据时,您可以随时使用用户输入的正确值初始化所有表单字段。

答案 1 :(得分:0)

在调用前一个片段之前,您必须从当前片段中提取数据。 在片段中创建一个为您提供该值的方法。

FragmentManager fragmentManager = getFragmentManager();
YOUR_FRAGMENT f = (YOUR_FRAGMENT)fragmentManager.findFragmentByTag(THE_TAG);
f.theNewMethod(); // store this!

答案 2 :(得分:0)

如果您想使用按钮返回上一个片段,只需在按钮上添加此代码:

void previousFragment(){
getFragmentManager().popBackStack();
            getFragmentManager().executePendingTransactions();
}

然后你就不会丢失上一段片段的最后一次编辑