活动中的共享引用-android

活动中的共享引用-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,

请说明如何保存状态切换按钮?我有带加载代码的MainActivity及其正确性。这在创建时是公开的

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();
        }

    }
});