活动中的共享引用-android
请说明如何保存状态切换按钮?我有带加载代码的MainActivity及其正确性。这在创建时是公开的活动中的共享引用-android,android,save,sharedpreferences,state,Android,Save,Sharedpreferences,State,请说明如何保存状态切换按钮?我有带加载代码的MainActivity及其正确性。这在创建时是公开的 SharedPreferences editor = getSharedPreferences("mymode", MODE_PRIVATE); boolean tgpref = editor.getBoolean("tgpref", true); //default is true if (tgpref == true) { //if (tgpref) may be enough,
SharedPreferences editor = getSharedPreferences("mymode", MODE_PRIVATE);
boolean tgpref = editor.getBoolean("tgpref", true); //default is true
if (tgpref == true) { //if (tgpref) may be enough, not sure
chAppStat.setChecked(true);
} else {
chAppStat.setChecked(false);
}
并将代码保存在AppInfoAdapter中,但此类中的模式不正确
public void onCheckedChanged( CompoundButton buttonView, boolean isChecked) {
if(isChecked) {
try {
SharedPreferences.Editor editor = getSharedPreferences(MODE_PRIVATE).edit();
editor.putBoolean("tgpref", true); // value to store
editor.commit();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
主活动中的If都是正确的,但两部分中的If是不正确的。请给我一些建议或例子。谢谢您正在读取/保存的键值不同: 正在阅读“
tgpref
”
并保存“thpref
”
在两者中使用相同的键名“tgpref
”
更新:
现在,您的AppInfoAdapter必须实现OnCheckedChangeListener
public class AppInfoAdapter extends BaseAdapter implements OnCheckedChangeListener{
或者将侦听器设置为您的复选框:
CheckBox myCheckBox = ( CheckBox ) findViewById( R.id.repeat_checkbox );
myCheckBox .setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
//0 = MODE_PRIVATE
SharedPreferences.Editor editor = getSharedPreferences("mymode", 0).edit();
editor.putBoolean("tgpref", isChecked );
editor.commit();
}
}
});
getSharedReferences
和getPreferences
不会做同样的事情。阅读文档是我的错误,但是appinfodata中的MODE_PRIVATE错误仍然是getSharedReferences(“mymode”,MODE_PRIVATE)
!=GetSharedReferences(MODE_PRIVATE)
ok现在您的代码正确了,您的AppInfoAdapter扩展了OnCheckedChangeListener?chAppStat.setOnCheckedChangeListener(Alitener);OnCheckedChangeListener alitener=new CompoundButton.OnCheckedChangeListener()
我的ToggleButton上有一个监听器是的,我有这个权利,你写什么。错误仍在SharedReferences.Editor=getSharedReferences(“mymode”,MODE_PRIVATE).edit()中代码>更准确地说,在模式_PRIVATE中,其他代码正确。请参见我的答案,您需要在editor.putBoolean(“tgpref”,isChecked)中设置isChhecked;是的,我更正了,谢谢,但mode仍然不正确:mode_PRIVATE不能解析为变量,但我的意思是它的语法很好。
public class AppInfoAdapter extends BaseAdapter implements OnCheckedChangeListener{
CheckBox myCheckBox = ( CheckBox ) findViewById( R.id.repeat_checkbox );
myCheckBox .setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
//0 = MODE_PRIVATE
SharedPreferences.Editor editor = getSharedPreferences("mymode", 0).edit();
editor.putBoolean("tgpref", isChecked );
editor.commit();
}
}
});