我有一个包含29个复选框的片段,我想保存那些(如果他们是否被选中)的偏好,这样当我重新打开应用程序时,是否选中了复选框(取决于之前的选项)使用)
我已经实现了sharedPreferences,但仍然无法保存它们。当我重新打开应用程序时(或当我更改片段并返回时),之前选中的复选框将被取消选中(如重置)。
我是Android编程的新手,所以请原谅我的noobyness。
这是我的fragment.java
public class PresencasFragment extends Fragment implements OnClickListener {
CheckBox aula1;
(...)
CheckBox aula29;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_presencas, container, false);
aula1 = (CheckBox) rootView.findViewById(R.id.aula1);
(...)
aula29 = (CheckBox) rootView.findViewById(R.id.aula29);
loadSavedPreferences();
return rootView;
}
private void loadSavedPreferences() {
// TODO Auto-generated method stub
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
boolean aula1Val = sharedPreferences.getBoolean("CheckBox_Value1", false);
(...)
boolean aula29Val = sharedPreferences.getBoolean("CheckBox_Value29", false);
if (aula1Val){
aula1.setChecked(true);}
else{
aula1.setChecked(false);}
(...)
if (aula29Val){
aula29.setChecked(true);}
else{
aula29.setChecked(false);}
}
private void savePreferences(String key, boolean value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, value);
editor.commit();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(aula1.isChecked()) savePreferences("CheckBox_Value1",aula1.isChecked());
(...)
if(aula29.isChecked()) savePreferences("CheckBox_Value29",aula29.isChecked());
}
那么,我做错了什么?
答案 0 :(得分:1)
为什么在使用专为此目的而设计的PreferenceFragment时,您有自己的片段? (或API级别11下的PreferenceActivity)
它会自动执行您的操作。
点击此链接了解详情:http://android-er.blogspot.hu/2012/07/example-of-using-preferencefragment.html