2016-03-08 13 views
0

Я использовал переключатель для установки уведомлений. Я хочу сохранить уведомления, если переключатель установлен, то есть уведомление включено.isChecked() возвращает true, хотя переключатель не установлен

Но если я на выключателе и снова выключу переключатель и сохраните событие. Затем также устанавливается уведомление.

Как я отлаживал на if(isChecked() == true), он возвращает true, если я включаю и выключаю один раз. Если я не изменю состояние переключателя, он вернет false.

Что случилось?

notify.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, 
            boolean isChecked) { 

      if (isChecked) { 

       linearSelectTime.setEnabled(true); 
       linearSelectTime.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         final AlertDialog.Builder builder = new AlertDialog.Builder(AddEventActivity.this); 

         int selected = 0; 

         builder.setSingleChoiceItems(R.array.time_array, selected, 
           new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, int item) { 

             String[] time = getBaseContext().getResources().getStringArray(R.array.time_array); 

             notifyTime.setText(time[item]); 

             notificationTime = time[item]; 

             dialog.dismiss(); 
            } 
           }); 
         builder.show(); 
        } 

       }); 
      } else { 

       alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
       intent = new Intent(getApplicationContext(), NotificationReceiver.class); 
       pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), RQS_1, intent, 0); 
       alarmManager.cancel(pendingIntent); 

       notificationTime = ""; 
       notifyText.setVisibility(View.INVISIBLE); 
       linearSelectTime.setEnabled(false); 
      } 

     } 
    }); 

при сохранении:

     if (notify.isChecked()) { 
          setNotificationTime(c); 

         } 

Что происходит здесь не так.?

+0

Вы не возражаете, чтобы удалить горизонтальную полосу прокрутки из вашего поста? – reporter

ответ

3

OnCheckedChangeListener не работает должным образом большую часть времени. Сначала установите OnClickListener на свой флажок и в этом использовании метода IsChecked для ПолучитьЗначения вашего флажка как этого

checkBox.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    if (checkBox.isChecked()) 
    { 

    }else { 

    } 
    } 
    });