如果检查了CheckBox,我该如何存储?

时间:2016-07-09 12:54:35

标签: java android checkbox

我有一个不再需要显示的活动,如果不再显示"不再显示" CheckBox已经过检查,但我无法弄清楚如何使其正常工作。

这是我到目前为止所尝试过的:

public class PopUpInfoActivity extends Activity {
static final String PREFS = "preference_file";

@Override
public void onCreate(Bundle state){
    super.onCreate(state);
    setContentView(R.layout.popupinfo_layout);


    CheckBox chk = (CheckBox) findViewById(R.id.dontshow_checkbox);
    chk.setChecked(PreferenceManager.getDefaultSharedPreferences(this).getBoolean("value", false));

    chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            //store isChecked to Preferences
            SharedPreferences settings = getSharedPreferences(PREFS,0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("isChecked", false);

            PreferenceManager.getDefaultSharedPreferences(PopUpInfoActivity.this).edit().putBoolean("value", isChecked).apply();
        }
    });
}

此代码仍然无效,因为如果我检查CheckBox并杀死并重新启动应用程序,活动仍会显示,我该如何才能使其正常工作?

我真的很感激任何帮助!

2 个答案:

答案 0 :(得分:3)

将此用于设置复选框值

chk.setChecked(PreferenceManager.getDefaultSharedPreferences(this).getBoolean("value", false));

将此用于获取复选框值。

chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

       @Override
       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
          //store isChecked value in shareprefernce

          PreferenceManager.getDefaultSharedPreferences(PopUpInfoActivity.this).edit().putBoolean("value", isChecked).commit();
       }
   }
); 

享受编码。

答案 1 :(得分:0)

您需要正确使用偏好...

写下来:

SharedPreferences spref = getSharedPreferences("your_prefs_name", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = spref.edit();
editor.putBoolean ("myChechButtonWasChecked", prefVal); //
editor.commit();

阅读

SharedPreferences preferences = getPreferences(Activity.MODE_PRIVATE);
bool storedPreference = preferences.getBoolean("myChechButtonWasChecked", false);