Android的切换按钮随时查询 [英] Android ToggleButton always check

查看:163
本文介绍了Android的切换按钮随时查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要在共享preferences存储是否经过切换按钮或取消。

  toggle.setOnCheckedChangeListener(新OnCheckedChangeListener(){
         公共无效onCheckedChanged(CompoundButton buttonView,布尔器isChecked)

如果(器isChecked){
    共享preferences.Editor编辑= getShared preferences(共享prefName,MODE_PRIVATE).edit();
   editor.putBoolean(检查,真正的);
      editor.commit();

    }
其他   {
  共享preferences.Editor编辑= getShared preferences(共享prefName,MODE_PRIVATE).edit();
   editor.putBoolean(NOCHECK,假);
   editor.commit();
}
}});
 

但是,当我测试,它总是被设置检查 在的OnCreate()我说的:

 共享preferences preferences = getShared preferences(共享prefName,MODE_PRIVATE);
    布尔值1 = preferences.getBoolean(检查,真正的);

    如果(值1 =共享prefs.getBoolean(检查,真)){
        psw.setChecked(值1);
    }其他  {
        psw.setChecked(假);
    }
 

解决方案

在OnCheckedChangeListener,如果复选框被选中,为您节省检查 = 真正的。装载时,该如果将永远是真实的,因为你的价值比较本身(或你给作为默认),所以它会检查框。

如果该复选框未选中,为您节省 NOCHECK = 。装载时,没有检查 preference(或它有previously保存值)所以默认加载。

修复您的code:

监听器的方法体:

 共享preferences.Editor编辑= getShared preferences(共享prefName,MODE_PRIVATE).edit();
editor.putBoolean(检查,器isChecked);
editor.commit();
 

加载code(更换第二片段与此):

  psw.setChecked(preferences.getBoolean(检查,FALSE));
 

I want to store in SharedPreferences if the toggle button is Checked or uncheck.

 toggle.setOnCheckedChangeListener(new OnCheckedChangeListener(){
         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)

if(isChecked){             
    SharedPreferences.Editor editor = getSharedPreferences("SharedPrefName", MODE_PRIVATE).edit();
   editor.putBoolean("check", true);
      editor.commit();

    } 
else   {
  SharedPreferences.Editor editor = getSharedPreferences("SharedPrefName", MODE_PRIVATE).edit();
   editor.putBoolean("nocheck", false);
   editor.commit();
}
}});

But when I test this, it is always set to check in OnCreate() I added this:

SharedPreferences preferences = getSharedPreferences("SharedPrefName", MODE_PRIVATE);
    boolean value1 = preferences.getBoolean("check", true);  

    if (value1 = sharedPrefs.getBoolean("check", true)){
        psw.setChecked(value1);
    }else  {
        psw.setChecked(false);
    }

解决方案

In the OnCheckedChangeListener, if the checkbox is checked, you save check = true. When loading, the if will always be true, since you are comparing the value to itself (or the default which you gave as true) so it checks the box.

If the checkbox is not checked, you save nocheck = false. When loading, there is no check preference (or it has the previously saved true value) so the default true is loaded.

Fixing your code:

Listener method body:

SharedPreferences.Editor editor = getSharedPreferences("SharedPrefName", MODE_PRIVATE).edit();
editor.putBoolean("check", ischecked);
editor.commit();

Loading code (replace the second snippet with this):

psw.setChecked(preferences.getBoolean("check", false));

这篇关于Android的切换按钮随时查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆