保持片段之间的数据持久化
keep data persistent between fragments
我正在尝试在 ViewPager 的帮助下构建一个向导,在每个步骤中,用户将输入该数据,最后所有插入的数据都应在最终确认之前呈现给用户,并将所有数据发送到服务器。
我想知道的是:
如何保持数据持久化,以便在最后的片段中将所有内容呈现给用户?我想使用一种在性能和效率方面最好的方法。
在哪个事件(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;
}
};
}}
但它只有一个决定,我在这个问题上看到装饰器或状态机设计模式。
我正在尝试在 ViewPager 的帮助下构建一个向导,在每个步骤中,用户将输入该数据,最后所有插入的数据都应在最终确认之前呈现给用户,并将所有数据发送到服务器。
我想知道的是:
如何保持数据持久化,以便在最后的片段中将所有内容呈现给用户?我想使用一种在性能和效率方面最好的方法。
在哪个事件(
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;
}
};
}}
但它只有一个决定,我在这个问题上看到装饰器或状态机设计模式。