Почему IsEnabled для кнопки переключения не работает в Android?

#android #isenabled #android-togglebutton

#Android #isenabled #android-кнопка переключения

Вопрос:

Я только что определил переменную ToggleButton, нашел представление по идентификатору, установил для activated значение false и установил OnClickListener. В методе onClick я проверил, был ли он включен в операторе if. Если он был включен, то он должен был его зарегистрировать, но я проверил консоль и LogCat, и он ничего не отображал. Вот мой код:

 tb = (ToggleButton) findViewById(R.id.onoff);
    tb.setActivated(false);
    tb.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if(tb.isEnabled()){
                Log.d("", "activated");
            }else if(!tb.isEnabled()){
                Log.d("", "deactivated");
            }
        }
    });
  

Я не знаю, как сделать «код внутри текста» (например, onClick должен иметь серый прямоугольник над ним).

Ответ №1:

  public boolean isEnabled ()
  

Этот метод наследуется от представления базового класса, который в основном определяет, является ли он неподконтрольным пользователю или нет.

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

Обновите свой код следующим образом:

 tb = (ToggleButton) findViewById(R.id.onoff);
tb.setActivated(false);
tb.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if(((ToggleButton)v).isChecked()){
            Log.d("", "activated");
        }else{
            Log.d("", "deactivated");
        }
    }
});
  

или второй способ

в вашем XML-коде

 <ToggleButton 
android:id="@ id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Vibrate on"
android:textOff="Vibrate off"
android:onClick="onToggleClicked"/>
  

в вашей деятельности

 public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();

if (on) {
    // Enable vibrate
} else {
    // Disable vibrate
}
}
  

Комментарии:

1. Э … все еще не работает … LogCat по-прежнему полностью пуст.

2. обновлен ответ попробуйте первый способ … если не работает, второй способ должен работать 🙂