【问题标题】:How do I store if a CheckBox has been checked?如果 CheckBox 已被选中,我该如何存储?
【发布时间】:2016-07-10 13:47:45
【问题描述】:

如果选中“不再显示”复选框,我有一个不必再显示的 Activity,但我不知道如何使它工作。

这是我迄今为止尝试过的:

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 并杀死并重新启动应用程序,活动仍然出现,我该如何使其工作?

非常感谢任何帮助!

【问题讨论】:

  • 你在哪里写共享首选项?
  • 您需要在某些时候编写首选项...否则逻辑不正确...

标签: java android checkbox


【解决方案1】:

将此用于设置复选框值

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();
       }
   }
); 

享受编码。

【讨论】:

  • 感谢您的回答!我已经尝试过了,但我在this 上的PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("value", isChecked).apply(); 中收到错误消息:不兼容的类型: 无法转换为 Context
  • 使用ClassName.this 而不是this
  • 感谢修复,但出现了另一个错误! Attempt to invoke virtual method 'void android.widget.CheckBox.setChecked(boolean)' on a null object reference。我将用我现在得到的内容编辑代码
  • 先这样绑定CheckBox chk = (CheckBox) findViewById(R.id.dontshow_checkbox);再使用
【解决方案2】:

您需要正确使用首选项...

写下来:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多