Toggle.setchecked внутри события onTextChanged

Я пытаюсь использовать кнопку-переключатель для отображения статуса проверки числа, когда число вводится в текстовое поле. Я уже настроил его с помощью TextView, и он отлично работает, но я хотел бы заменить его графически. Никаких ошибок не возникает со следующим, но состояние не изменяется с событиями .SetChanged в событии OnChanged:

   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ToggleButton togShortCircuit = (ToggleButton) findViewById(R.id.togShortCircuit);
    togShortCircuit.setClickable(false);

    final EditText txtOCVListen = (EditText) findViewById(R.id.txtOCV);
    txtOCVListen.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            txtOCVListen.setFilters(new InputFilter[]{new CustomRangeInputFilter(0f, 16.0f)});

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

            if (txtOCVListen.getText().toString().equals(null) || txtOCVListen.getText().toString().equals("")){
                fltOCV = 0;
            } else {
                fltOCV = Float.parseFloat(txtOCVListen.getText().toString());
            }

            //Short Circuit
            if (fltOCV < 10.6 && fltULV > 0 && fltULV <= 8.5) {
                TextView lblShortCircuitStatus = (TextView) findViewById(R.id.lblShortCircuitStatus);
                lblShortCircuitStatus.setText("True");
                lblShortCircuitStatus.setTextColor(0xFFD51817); //Red
                togShortCircuit.setChecked(true);

            } else {
                TextView lblShortCircuitStatus = (TextView) findViewById(R.id.lblShortCircuitStatus);
                lblShortCircuitStatus.setText("False");
                lblShortCircuitStatus.setTextColor(0xFF808080); //Grey
                togShortCircuit.setChecked(false);
            }

Кажется, не могу понять, как объявить togShortCircuit, чтобы он распознавался с событием. Использование Android Studio 3.12 и разработка для Android 7.0.

Нет ничего плохого в изменении состояния ToggleButton внутри TextWatcher, я даже пробую это в своем коде. Вы отладили его и убедились, что код проходит через строку togShortCircuit.setChecked(true);?

Tam Huynh 22.05.2018 07:03

Похоже, что он срабатывает, когда я выполняю отладку, но состояние не меняется. если я поставлю togShortCircuit.setChecked (true); в основном теле onCreate он меняет состояние очень хорошо, поэтому я знаю, что это не xml. Похоже, он просто не проходит к объекту. Кроме того, интересное примечание: если я установил значение true в основном onCreate, setChecked в значение false в другой части оператора срабатывает, и состояние заметно меняется обратно на false, но все равно не возвращается на true в операторе if.

Steven Blanc 22.05.2018 12:24
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
36
0

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