保持片段之间的数据持久化

keep data persistent between fragments

我正在尝试在 ViewPager 的帮助下构建一个向导,在每个步骤中,用户将输入该数据,最后所有插入的数据都应在最终确认之前呈现给用户,并将所有数据发送到服务器。

我想知道的是:

  1. 如何保持数据持久化,以便在最后的片段中将所有内容呈现给用户?我想使用一种在性能和效率方面最好的方法。

  2. 在哪个事件(onDestroy?,onDetach?)用户按下"Next"按钮移动下一步时应该保存数据巫师?

请记住,每一步都应保留更多数据。

我看到了 android 向导的解决方案,但我对它们的问题是它们不支持 RTL,因此使用 ViewPager 我可以使用 setCurrentitem() 方法设置初始步骤。

https://github.com/romannurik/Android-WizardPager https://github.com/Nimrodda/WizarDroid

感谢您的帮助

我认为这更多是你的架构设计决定。

例如,您所有的片段 类 都应该实现自定义接口与 onPause() 方法。为了什么,你沉了,mainFragment.class有一个onPause()?这是因为当您在视图寻呼机适配器中加载片段时,他只显示一个但实际上他从 fragmentsArray 加载 3 个或更多片段并缓存它们,并且当您仅在第一个片段上 onPause() 对第二个和第三个片段起作用时,依此类推。 ...在 Whosebug 上是针对这个问题的决定,例如:

 public interface FragmentLifeCycle {
    void onPauseFragment(); } ///for saving your data you must implement it in all fragments from view Pager 



     public class SomeFragment extends Fragment implements FragmentLifeCycle {
        @Override
        public void onPauseFragment() {
            //save your data here
        }}

    public class NewHomeActivity extends Activity {
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //.........
        //..........
 final ViewPager.SimpleOnPageChangeListener listener = pageChangeListener(YourPagerAdapter);
        YourViewPager.addOnPageChangeListener(listener);


        }
     private ViewPager.SimpleOnPageChangeListener pageChangeListener(final FragmentPagerAdapter adapter) {
            return new ViewPager.SimpleOnPageChangeListener() {

                int currentPosition = 0;

                @Override
                public void onPageSelected(int newPosition) {

                    FragmentLifeCycle fragmentToHide = (FragmentLifeCycle) adapter.getItem(currentPosition);
                    fragmentToHide.onPauseFragment();

                    currentPosition = newPosition;
                }
            };
        }}

但它只有一个决定,我在这个问题上看到装饰器或状态机设计模式。