Установить состояние кнопки переключения Android в тексте texview

у меня есть кнопка переключения, которая, когда она установлена ​​​​в положение «включено», устанавливает подсказку для одного из моих текстовых представлений на

"kg"

. начальный намек на текстовое представление

"st"

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

когда я впервые запускаю приложение, отображается текстовое представление

"st"

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

"kg"

в textView (это тоже нормально.)

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

"kg"

Кто-нибудь знает, как я могу настроить его так, чтобы он всегда отображал «st» в выключенном состоянии и «kg» во включенном состоянии.

Спасибо заранее

addListenerOnButton();

      }

      public void addListenerOnButton() {

        unitToggle = (Button) findViewById(R.id.unitToggle);
       final TextView tw1 = (TextView)findViewById(R.id.tw1);


        unitToggle.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

               StringBuffer result = new StringBuffer();
               tw1.setHint("kg");

person Tuffy G    schedule 12.04.2012    source источник


Ответы (2)


Основной причиной указанной проблемы является еще не реализованная логика.

Когда вы нажимаете кнопку в первый раз, она устанавливает текст в «кг», который всегда будет устанавливаться при любом количестве щелчков. так как вы написали заявление

tw1.setHint("kg");

внутри вашего метода onClick() без сохранения состояния кнопки. выделенный текст.

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

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

person AndoAiron    schedule 12.04.2012

Пытаться

private boolean on=false;

 unitToggle.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

           StringBuffer result = new StringBuffer();
           if(on){
                tw1.setHint("kg");
                on = true;
           }else{
               tw1.setHint("st");
               on = false;
           }
person user936414    schedule 12.04.2012