2017-02-20 5 views
0

Могу ли я программно проверить checkbox и сделать его вызывать все, что кодируется, чтобы сделать после того, как он установлен или не установлен?Android Studio программно проверит флажок и вызовет его OnCheckedChange

Например, если у меня есть флажок, как этот

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if(isChecked) { 
       Toast.makeText(getContext(), "You checked the checkbox!", Toast.LENGTH_SHORT).show(); 
      } 
      else { 
       Toast.makeText(getContext(), "You unchecked the checkbox!", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 

И тогда бы я назвал

checkBox.setChecked(true);

мой флажок будет отмечен галочкой, но не сделали бы тост.

ответ

1

Вы можете сделать одно из следующих действий
1. Создание слушателю объекта отдельно и назвать его вручную, когда вы звоните setChecked
2. Извлеките метод для реализации onCheckedChanged и вызвать его вручную в изменении.

1

Как следует из названия, setOnCheckedChangeListener, он вызывает только обратный вызов, если значение флажка действительно изменяется.

Итак, если он уже проверен (правда), а затем вы вызываете checkbox.setChecked(true), значение не изменилось, поэтому ваш обратный вызов не будет вызываться.

Попытайтесь сделать checkbox.setChecked(false), и он должен работать правильно.

Это мое лучшее предположение, не видя остальную часть вашего кода/xml.

+0

Я имею в виду, если он не установлен, и я вызываю setChecked (true), он не вызывает метод onCheckedChange. Но я думаю, что именно так оно работает в соответствии с приведенными ниже комментариями, спасибо, хотя –

1

Изменения в виджетах Android или касании не моделируются. вы можете изменять состояния виджетов, такие как отключение, включение, проверку или снятие программно, но при выполнении каких-либо задач при изменении состояния вам необходимо вручную изменить их состояния, коснувшись этого виджета.

0
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 

     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if (isChecked) { 

          Toast.makeText(getContext(), "You checked the checkbox!", Toast.LENGTH_SHORT).show(); 

       } 

      } else { 

           Toast.makeText(getContext(), "You unchecked the checkbox!", Toast.LENGTH_SHORT).show(); 

      } 


     } 

    }); 

Просто чеканка. это сработает для меня.

+0

Вы звонили через setChecked или установили флажок? –

+0

Нажав на флажок –

+0

, если он не работает, вы также можете попробовать checkbox.setOnClickListener (новый View.OnClickListener() { public void onClick (View v) {}); –

 Смежные вопросы

  • Нет связанных вопросов^_^