【问题标题】:android checkbox is checked always trueandroid复选框总是被选中
【发布时间】:2015-09-30 02:40:42
【问题描述】:

我定义了一个复选框,但没有为其赋值。
每次我点击它并打印复选框的值时,它每次都显示true

我将结果放在 SharedPreferences 中,然后检索它。
为什么总是true

public class CallAndSms extends Activity{
static SQLiteDatabase myDB= null;
static     Context context ;
static ListView lv;
static CallAndSmsAdaptor adapter;
static ArrayList<String> AllData= new ArrayList<String>();
CheckBox save;
static SharedPreferences preferences;
SharedPreferences.Editor editor=null;
 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);





    setContentView(R.layout.sms_call);
     preferences = getSharedPreferences("modes",Context.MODE_PRIVATE);
     editor = preferences.edit();



    save= (CheckBox) findViewById(R.id.save);


    save.setChecked(preferences.getBoolean("save", true));



    context=this;


     save.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton arg0, boolean arg1) {

            if ( save.isChecked()){
                Log.i("save save", save.isChecked()+"");

                  editor.putBoolean("save", true);

            }

            else 

                  {editor.putBoolean("save", false);}

            Log.i("pref", preferences.getBoolean("save", true)+"");


        }
    });


 }
 }

【问题讨论】:

  • 因为您在从共享首选项中获取值时传递了默认值,键为“保存”为真。所以默认情况下你的复选框被选中

标签: android eclipse checkbox


【解决方案1】:

您的偏好永远不会改变apply()(或commit())。
因此,您始终检索默认值。

【讨论】:

    【解决方案2】:

    您必须在编辑后提交您的shared preferences

    save.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
               if ( save.isChecked()){
                  Log.i("save save", save.isChecked()+"");
                  editor.putBoolean("save", true);
                  editor.commit();
               }else{
                  editor.putBoolean("save", false);
                  editor.commit();
               }
                  Log.i("pref", preferences.getBoolean("save", true)+"");
            }
        }); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 2021-12-20
      • 2017-01-10
      • 1970-01-01
      • 2015-12-28
      • 2017-06-07
      相关资源
      最近更新 更多