2014-09-26 2 views
-1

Я разрабатываю приложение списка задач, используя sharedpreferences. но он не сохраняет статус флажка. Я хочу сохранить, когда пользователь нажмет на флажок. После того, как пользователь выйдет из приложения и снова увидит его, он уже обновил статус. Как сохранить статус флажка? Вот мой код (уже Фиксированный и работа)SharedPreferences не сохраняет статус флажка

public class TaskList extends Activity { 
    CheckBox cb1, cb2, cb3, cb4; 
    Boolean checked = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.activity_tasks); 
     super.onCreate(savedInstanceState); 
     findID(); 

     cb1 = (CheckBox) findViewById(R.id.checkBox1); 
     boolean isChecked = getBooleanFromPreferences("isChecked"); 
     Log.i("start", "" + isChecked); 
     cb1.setChecked(isChecked); 
     cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
       Log.i("boolean", "" + isChecked); 
       putBooleanInPreferences(isChecked,"isChecked"); 

      } 
     }); 
    } 

    public void putBooleanInPreferences(boolean isChecked, String key) { 
     SharedPreferences sharedPreferences = this 
       .getPreferences(Activity.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean(key, isChecked); 
     editor.commit(); 
    } 

    private boolean getBooleanFromPreferences(String key) { 
     SharedPreferences sharedPreferences = this 
       .getPreferences(Activity.MODE_PRIVATE); 
     Boolean isChecked = sharedPreferences.getBoolean(key, false); 
     return isChecked; 
    } 

    private void findID() { 
     cb1 = (CheckBox) findViewById(R.id.checkBox1); 
     cb2 = (CheckBox) findViewById(R.id.checkBox2); 
     cb3 = (CheckBox) findViewById(R.id.checkBox3); 
     cb4 = (CheckBox) findViewById(R.id.checkBox4); 
    } 

} 
+0

Я понимаю, что вы хотите только добиться такого поведения для CB1 – zozelfelfo

+1

Почему линия, которая сохраняет прив закомментирована и почему он ссылается на неизвестный класс 'Settings'? – wvdz

+0

Да, я хочу только для cb1 – bee

ответ

3

Вам необходимо обновить значение в SharedPreferencesevery времени статус CheckBox проверки изменяется. Удалить комментарий из этой строки Settings.this.putBooleanInPreferences(isChecked,"isChecked") в setOnCheckedChangeListener.

Таким образом, ваш слушатель будет, как показано ниже:

cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
       Log.i("boolean", "" + isChecked); 

       putBooleanInPreferences(isChecked,"isChecked"); 
      } 
     }); 

Надеется, что это помогает.

0

Попробуйте этот путь, надеясь, что это поможет вам решить вашу проблему.

public class TaskList extends Activity { 

    private CheckBox cb1; 
    private CheckBox cb2; 
    private CheckBox cb3; 
    private CheckBox cb4; 
    private SharedPreferences sharedPreferences; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     setContentView(R.layout.activity_tasks); 
     super.onCreate(savedInstanceState); 
     cb1 = (CheckBox) findViewById(R.id.checkBox1); 
     cb2 = (CheckBox) findViewById(R.id.checkBox2); 
     cb3 = (CheckBox) findViewById(R.id.checkBox3); 
     cb4 = (CheckBox) findViewById(R.id.checkBox4); 

     sharedPreferences = getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE); 

     cb1.setChecked(sharedPreferences.getBoolean("cb1",false)); 
     cb2.setChecked(sharedPreferences.getBoolean("cb2",false)); 
     cb3.setChecked(sharedPreferences.getBoolean("cb3",false)); 
     cb4.setChecked(sharedPreferences.getBoolean("cb4",false)); 
     cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putBoolean("cb1", isChecked); 
       editor.commit(); 
      } 
     }); 
     cb2.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putBoolean("cb2", isChecked); 
       editor.commit(); 
      } 
     }); 
     cb3.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putBoolean("cb3", isChecked); 
       editor.commit(); 
      } 
     }); 
     cb4.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putBoolean("cb4", isChecked); 
       editor.commit(); 
      } 
     }); 

    } 
} 
+0

Ваш ответ тоже полезен. вы только 1 минус поздно, чтобы дать ответ. Спасибо за вашу помощь. – bee