【问题标题】:How to save EditText value in Shared Preferences when user swipe fragment in viewpager?当用户在 viewpager 中滑动片段时,如何在 Shared Preferences 中保存 EditText 值?
【发布时间】:2016-08-04 06:34:52
【问题描述】:

我在 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();
    }

下面是我获取edittext值以保存在共享首选项中的代码 -

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`

【问题讨论】:

    标签: java android android-fragments android-viewpager android-sharedpreferences


    【解决方案1】:

    变量editor 在用户类的构造函数中为空。这就是你崩溃的原因。

    还有onPageScrollStateChanged - 不适合做这样的事情,因为它会在一个片段滑动期间被多次调用。最好使用onPageScrolled

    为了保存东西而创建片段也是没有意义的,您需要使用对用户可见的片段实例。 Check如何按位置获取片段。

    【讨论】:

    • 感谢潜水员。不是我从会话中获取价值,如下所示 - // 从会话中获取用户数据 HashMap user= session.getUserData(); // 用户 id final String abc = user.get(SessionManager.EditText1);现在我在editText1中设置了abc - EditText1.setText(abc);它给了我错误-java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.AutoCompleteTextView.setText(java.lang.CharSequence)'
    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2016-08-01
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多