Android 离开应用程序或返回活动后如何保存勾选复选框?
离开应用程序或返回活动后,如何保存复选框中的勾号 这是我的密码:Android 离开应用程序或返回活动后如何保存勾选复选框?,android,Android,离开应用程序或返回活动后,如何保存复选框中的勾号 这是我的密码: ch = (CheckBox) rootView.findViewById(R.id.checkBox62); ch.setOnClickListener(new View.OnClickListener() { private String PREFRENCES_NAME; @Override public void onClick(View v) {
ch = (CheckBox) rootView.findViewById(R.id.checkBox62);
ch.setOnClickListener(new View.OnClickListener() {
private String PREFRENCES_NAME;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(ch.isChecked())
{
SharedPreferences pref = getActivity().getSharedPreferences(PREFRENCES_NAME,0);
ch.setChecked(pref.getBoolean("cbx62_ischecked" ,true));
pref.edit().putBoolean("check",true).commit();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext());
ch.setChecked(settings.getBoolean("check", true));
}
{
}}
});
return rootView;
}
}
任何帮助都将不胜感激
编辑
这是我的完整代码:
public class TestingFragment extends Fragment {
public TestingFragment(){}
private CheckBox ch;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_testing, container, false);
ch = (CheckBox) rootView.findViewById(R.id.checkBox62);
ch.setOnClickListener(new View.OnClickListener() {
private String PREFRENCES_NAME;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(ch.isChecked())
{
SharedPreferences pref = getActivity().getSharedPreferences(PREFRENCES_NAME,0);
ch.setChecked(pref.getBoolean("cbx62_ischecked" ,true));
pref.edit().putBoolean("check",true).commit();
}
{
}}
});
return rootView;
}
}
我已经删除了重复的代码ch.setChecked(pref.getBoolean(“cbx62_ischecked”,true))代码>我已经再次测试了,但仍然不起作用。在OnCreate()方法中定义
SharedPreferences pref = getActivity().getSharedPreferences("Pref",0); // better make it global
现在单击复选框时
ch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(pref.getBoolean("check", false))
{
ch.setChecked(false);
pref.edit().putBoolean("check", false).commit();
} else {
ch.setChecked(true);
pref.edit().putBoolean("check", true).commit();
}
}
});
并在onResume()中编写以下代码
你现在面临什么问题?你多次定义共享首选项吗?当我退出应用程序并返回或移动到一个活动然后返回此活动时,似乎不会在复选框中保存勾号。你为什么调用ch.setChecked(settings.getBoolean(“check”,true));两次?请在插入共享首选项的位置添加代码。只需键入Resume并按Ctrl
+Space
。这是一个覆盖的方法
if(pref.getBoolean("check", false))
{
ch.setChecked(false);
} else {
ch.setChecked(true);
}