2017-01-03 1 views
0

나는 안드로이드를 처음 접했고 체크 박스가 체크되어있을 때 알람을 시작하고 확인란의 상태를 유지하는 앱을 만들어야합니다. 확인란의 값을 저장하고 알람을 시작하기 위해 int를 사용하려고했지만 작동하지 않습니다.체크 박스와 알람 상태 저장하기

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

경보가 제대로 작동하기 때문에 경보 관리자와 의도 코드가 포함되지 않았습니다. 나는 값을 체크 박스에 저장하고 체크 할 때 필요하다. 알람을 켜고 확인란의 상태를 저장해야합니다. 확인되지 않은 경우 알람을 끄고 체크 박스의 시작을 저장해야합니다.

나는 그것을 고치려고 몇 시간을 보냈습니다. 문제를 안다면 plz 알려주세요. 감사합니다

답변

0

apply()을 사용 중이며 성공 또는 실패를 나타내는 부울을 반환하지 않습니다.

commit()을 사용하면 저장이 작동하면 true를 반환하고 그렇지 않으면 false를 반환합니다. 변수 상태가 저장되었는지 여부를 판별하는 데 도움이됩니다.

0

체크 박스를 선택하려면 checkBox1.setChecked(true);을 사용해야합니다. checkBox1.isChecked();은 체크 박스의 상태를 얻는 것입니다.

관련 문제