我是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();
}
我没有包括警报管理器和意图代码,因为警报工作正常。我只需要将值保存到复选框中,当它被选中时;它应该打开警报并保存复选框的状态。当它未被检查时;它应该关闭警报并保存开始复选框。
我花了好几个小时想弄明白。如果你知道这个问题,请告诉我。谢谢您
2条答案
按热度按时间8aqjt8rx1#
我想你应该用
checkBox1.setChecked(true);
选中复选框。checkBox1.isChecked();
是获取复选框的状态。lhcgjxsq2#
您正在使用
apply()
,它提交时不返回表示成功或失败的布尔值。尝试使用
commit()
如果保存有效,则返回true,否则返回false。它将帮助您确定变量状态是否已保存。