通过共享偏好保存活动

时间:2017-06-09 11:06:34

标签: java android

我在保存活动状态时遇到问题,我使用共享首选项来保存信息。当我点击按钮时,它会将其保存到共享首选项中并完成活动:

awk 'NR==1{print} {s=$0;n=gsub("^.*coordinates:","",s)} n{print $1,$2,s}' file

关闭活动后,我第二次打开但没有任何反应,

我的onCreate()方法:

$ awk 'NR==1{print} {s=$0;n=gsub("^.*coordinates:","",s)} n{print $1,$2,s}' file
XYZ-7, ABC987654321
1) 8  54°38,177’N, 13°33,573’E; 54°38,094’N, 13°33,237’E
2) 5  54°39, 377’ N, 13°33,940’E, 54°39,242’N, 13°33,632’E
23) 2  53°40,207’N, 14°32,522’E; 53°40,207’N, 14°32,557’E

3 个答案:

答案 0 :(得分:1)

onCreate中你有条件if(sharedPreferences!= null)当活动开始时,sharedPreferences将为null。你需要再次获得它的对象。

答案 1 :(得分:1)

同时使用apply()commit()对我来说似乎是多余的,请尝试进行所有编辑,然后使用与磁盘写入同步的commit()

Difference in commit() and apply()

    sharedPreferences = this.getSharedPreferences("my_Pref", Context.MODE_PRIVATE);
        SharedPreferences.Editor edit = sharedPreferences.edit();
    edit.putInt(AGE_SCORE, sbAge.getProgress());
        edit.putInt(STATUS_SCORE, spMyStatus.getSelectedItemPosition());
        if (rbFemaleMe.isChecked())
            edit.putInt(SEX_SCORE, 1);
        else if(rbMaleMe.isChecked())
            edit.putInt(SEX_SCORE, 2);
        edit.commit();
    finish();

问题在于您检查sharedpreferences != null但在启动时始终为null。首先使用getApplicationContext().getSharedPreferences("my_Pref", MODE_PRIVATE);初始化它。

protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_search);

            sharedPreferences = getApplicationContext.getSharedPreferences("my_Pref", MODE_PRIVATE);

             if(sharedPreferences != null)
            {

            sbAge.setProgress(sharedPreferences.getInt(AGE_SCORE, 0));
            spMyStatus.setSelection(sharedPreferences.getInt(STATUS_SCORE, 0));
            if(sharedPreferences.getInt(SEX_SCORE, 0) == 1)
                rbMaleMe.isChecked();
            else if (sharedPreferences.getInt(SEX_SCORE, 0) == 2)
                rbFemaleMe.isChecked();
        }

答案 2 :(得分:0)

删除if(sharedPreferences!= null){}此部分或尝试

sharedPreferences = getSharedPreferences("my_Pref", MODE_PRIVATE);
 if(sharedPreferences!= null)
            {
            ....
            }