当用户在 viewpager 中滑动片段时,如何在共享首选项中保存 EditText 值?
How to save EditText value in Shared Preferences when user swipe fragment in viewpager?
我在 viewpager 中有多个片段,每个片段都有近十个编辑文本,所以我想将所有值保存在共享首选项中。当用户滑动片段 1 时,片段 1 的数据将保存在共享首选项中,所有片段都相同。
public void user(String EditText1, String EditText2){
// Storing data in pref
editor.putString(value1, EditText1);
editor.putString(value2, EditText2);
// commit changes
editor.commit();
}
下面是我获取编辑文本值以保存在共享首选项中的代码 -
pager.setOffscreenPageLimit(9);
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
Fragment1 f1 = new Fragment1();
EditText1= f1.txtEditText1.getText().toString();
EditText2= f1.txtEditText2.getText().toString();
session.user(EditText1, EditText1);
}
});
当我在第一个片段上填写所有编辑文本时,当我滑动时出现以下错误 -
java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor `android.content.SharedPreferences$Editor.putString(java.lang.String, java.lang.String)' on a null object reference`
变量 editor
在用户 class 的构造函数中为 null。这就是你崩溃的原因。
另外 onPageScrollStateChanged
- 不适合做那样的事情,因为它会在一个片段滑动期间被调用多次。最好使用 onPageScrolled
。
同样,为了保存某些东西而创建片段是没有意义的,您需要使用对用户可见的片段实例。 Check如何按位置获取片段。
我在 viewpager 中有多个片段,每个片段都有近十个编辑文本,所以我想将所有值保存在共享首选项中。当用户滑动片段 1 时,片段 1 的数据将保存在共享首选项中,所有片段都相同。
public void user(String EditText1, String EditText2){
// Storing data in pref
editor.putString(value1, EditText1);
editor.putString(value2, EditText2);
// commit changes
editor.commit();
}
下面是我获取编辑文本值以保存在共享首选项中的代码 -
pager.setOffscreenPageLimit(9);
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
Fragment1 f1 = new Fragment1();
EditText1= f1.txtEditText1.getText().toString();
EditText2= f1.txtEditText2.getText().toString();
session.user(EditText1, EditText1);
}
});
当我在第一个片段上填写所有编辑文本时,当我滑动时出现以下错误 -
java.lang.NullPointerException: Attempt to invoke interface method 'android.content.SharedPreferences$Editor `android.content.SharedPreferences$Editor.putString(java.lang.String, java.lang.String)' on a null object reference`
变量 editor
在用户 class 的构造函数中为 null。这就是你崩溃的原因。
另外 onPageScrollStateChanged
- 不适合做那样的事情,因为它会在一个片段滑动期间被调用多次。最好使用 onPageScrolled
。
同样,为了保存某些东西而创建片段是没有意义的,您需要使用对用户可见的片段实例。 Check如何按位置获取片段。