4

Вопрос по checkbox, android – Сохранение состояний флажков

Я очень новичок и был бы признателен, если бы кто-то мог продемонстрировать код, необходимый для сохранения ряда состояний флажков в Java внутри приложения Android.

Скажем, у меня есть список инструментов (десять или более), которые необходимы пользователю для выполнения задачи, и он хотел бы, чтобы они могли отмечать каждый из них и сохранять эти данные (в приложении, а не в sQlite), чтобы они записывались при они возвращаются к заявке.

У меня есть представление о том, как это сделать, но я действительно хочу увидеть код, чтобы понять его правильно.

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.CheckBox;

public class CheckBoxTest extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.checkboxtest);
    CheckBox cb1,cb2,cb3,cb4;

    cb1 = (CheckBox)findViewById(R.id.checkBox1);
    cb2 = (CheckBox)findViewById(R.id.checkBox2);
    cb3 = (CheckBox)findViewById(R.id.checkBox3);
    cb4 = (CheckBox)findViewById(R.id.checkBox4);   
     }
 }
  • Error: User Rate Limit Exceeded

    от DarkLion
  • решил вашу проблему

    от Shankar Agarwal
  • 11

    Используйте приведенный ниже код для хранения и получения данных в Sha

    redPreference. Вы сохраняете каждое состояние флажка в SharedPreference

    // Получить значение из SharedPreference

    SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
    boolean value = preferences.getBoolean("KEY", false);
    String value = preferences.getString("KEY");
    

    // Сохранить значение в SharedPreference

    SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = preferences.edit();
    editor.putString("KEY", value);
    editor.putBoolean("KEY", value);
    editor.commit();
    

    посмотрите на это несколько небольших изменений ::::

    public class CheckBoxTest extends Activity implements OnCheckedChangeListener {
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.favorites_add_button);
                CheckBox cb1,cb2,cb3,cb4;
    
                cb1 = (CheckBox)findViewById(R.id.checkBox1);
                cb1.setChecked(getFromSP("cb1"));
                cb1.setOnCheckedChangeListener(this);
                cb2 = (CheckBox)findViewById(R.id.checkBox2);
                cb2.setChecked(getFromSP("cb2"));
                cb2.setOnCheckedChangeListener(this);
                cb3 = (CheckBox)findViewById(R.id.checkBox3);
                cb3.setChecked(getFromSP("cb3"));
                cb3.setOnCheckedChangeListener(this);
                cb4 = (CheckBox)findViewById(R.id.checkBox4);
                cb4.setChecked(getFromSP("cb4"));
                cb4.setOnCheckedChangeListener(this);
    
            }
            private boolean getFromSP(String key){
            SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
            return preferences.getBoolean(key, false);
            }
            private void saveInSp(String key,boolean value){
            SharedPreferences preferences = getApplicationContext().getSharedPreferences("PROJECT_NAME", android.content.Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = preferences.edit();
            editor.putBoolean(key, value);
            editor.commit();
            }
            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                    boolean isChecked) {
                // TODO Auto-generated method stub
                switch(buttonView.getId()){
                case R.id.checkBox1:
                saveInSp("cb1",isChecked);
                break;
                case R.id.checkBox2:
                saveInSp("cb2",isChecked);
                break;
    
                case R.id.checkBox3:
                saveInSp("cb3",isChecked);
                break;
    
                case R.id.checkBox4:
                saveInSp("cb4",isChecked);
                break;
                }
    
            }
            }
    

  • 0

    Привет

    я попробовал выше, но после перезагрузки или перезапуска моего устройства Android, я потерял бы проверенное состояние меню параметров. Я бы сказал, чтобы решить проблему:

    У вас есть 2 варианта:

    Get shared preference value during the life-cycle of the activity.

    Call .clear before .commit

    Смотри мой ответ:

    Постоянное проверяемое меню Android в пользовательском виджете после перезагрузки Android