保存复选框和报警的状态

aiazj4mn  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(353)

我是android新手,我需要制作一个应用程序,当复选框被选中时启动警报,并保存复选框的状态。我试图使用int保存checkbox的值并启动alarm,但它不起作用。

public int getValueC(String key) {
    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
    int value = sharedPref.getInt(key, 0);
    return value;
}
public void saveValueC(String key, int value) {
    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putInt(key, value);
    editor.apply();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_a_d_q);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    final CheckBox checkBox1 = (CheckBox) findViewById(R.id.mc);
    final String keyC = "somekeyC";
    c = getValueC(keyC); 

    checkBox1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            c++;
            saveValueC(keyC,c);

            if (c%2==0){
                Toast ToastMessage = Toast.makeText(getApplicationContext(), "off", Toast.LENGTH_LONG);
                //View toastView = ToastMessage.getView();
                //toastView.setBackgroundColor(Color.YELLOW);
                ToastMessage.show();
                alarmManagers.cancel(pendingIntent);
            }
            else{
                Toast ToastMessage = Toast.makeText(getApplicationContext(), "on", Toast.LENGTH_LONG);
                //View toastView = ToastMessage.getView();
                //toastView.setBackgroundColor(Color.YELLOW);
                ToastMessage.show();
                alarmManagers.setRepeating(AlarmManager.RTC,  calendar.getTimeInMillis(),2*60*1000,pendingIntents);

                checkBox1.isChecked();
            }});
   if (c%2==0){

        Toast ToastMessage = Toast.makeText(getApplicationContext(), "Even number", Toast.LENGTH_LONG);
        //View toastView = ToastMessage.getView();
        //toastView.setBackgroundColor(Color.YELLOW);
        ToastMessage.show();

    }
    else{

        checkBox1.isChecked();
    }

我没有包括警报管理器和意图代码,因为警报工作正常。我只需要将值保存到复选框中,当它被选中时;它应该打开警报并保存复选框的状态。当它未被检查时;它应该关闭警报并保存开始复选框。
我花了好几个小时想弄明白。如果你知道这个问题,请告诉我。谢谢您

8aqjt8rx

8aqjt8rx1#

我想你应该用 checkBox1.setChecked(true); 选中复选框。 checkBox1.isChecked(); 是获取复选框的状态。

lhcgjxsq

lhcgjxsq2#

您正在使用 apply() ,它提交时不返回表示成功或失败的布尔值。
尝试使用 commit() 如果保存有效,则返回true,否则返回false。它将帮助您确定变量状态是否已保存。

相关问题