我在保存活动状态时遇到问题,我使用共享首选项来保存信息。当我点击按钮时,它会将其保存到共享首选项中并完成活动:
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
答案 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)
{
....
}