Кнопка переключения Android

Это мой код:

tglSwitch.setOnCheckedChangeListener(new  OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
             int  t= isChecked ? 1 : 0;                  
             Log.i("t",t);
    }
}

когда пользователь проверяет или снимает флажок с переключателя, запускается приведенный выше код, и когда я тоже использую этот код.

tglSwitch.setChecked(true);

Как я могу обнаружить OnCheckedChangeListener() только тогда, когда пользователь делает это?

1 ответ

Вы должны отслеживать это с помощью отдельной переменной

int userChecked = 0;
int checked = 0;
tglSwitch.setOnCheckedChangeListener(new  OnCheckedChangeListener() {

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
         int  userChecked= isChecked ? 1 : 0;
         int checked= isChecked? 1:0;    
         Log.i("t",userchecked);
    }
}


if(userChecked == 0){
       tglSwitch.setChecked(true);
       checked = 1;} 
else {
      userChecked = 0;
      tglSwitch.setChecked(true);
      checked = 1;
}

Таким образом, вы можете определить, кто на самом деле проверял переменную (системную или нет). Вы также можете установить переменную в одну переменную и использовать ее -1 для изменения системы или 1 для изменения пользователя.

Другие вопросы по тегам