2015-11-16 2 views
3

Это мой код, и он не работает для меня. Я использую код от this пример.Android SwitchCompat onCheckedChangeListener не работает

Xml -

<android.support.v7.widget.SwitchCompat 
      android:id="@+id/visibility_switch" 
      android:layout_width="wrap_content" 
      android:layout_height="55dp" 
      android:layout_marginRight="@dimen/mat_card_padding" 
      app:showText="false" /> 

И код:

mVisibilitySwitchCompat = (SwitchCompat) findViewById(R.id.visibility_switch); 
mVisibilitySwitchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {    

        // this method doesn't work! 

        if (isChecked) { 
         mVisibilityTextView.setText(getString(R.string.visibility_on)); 
        } else { 
         mVisibilityTextView.setText(getString(R.string.visibility_off)); 
        } 
       } 
      }); 
+0

Это должно быть 'mVisibilityTextView.setText (getResources(). GetString (R.string.visibility_on));' –

+0

@MD нет необходимости getResources() теперь –

+0

@KrupalShah почему бы и нет? –

ответ

1

Вместо того, чтобы использовать слушателя, попробуйте setTextOff() и setTextOn() методы. Коммутатор автоматически обработает настройку правильного при изменении состояния проверки.

+0

Могу ли я поймать события переключения или нажать SwitchCompat? – Artem

+0

@Artem Да, вы должны уметь делать большинство вещей, которые вы можете делать с любым другим представлением. Просто он автоматически обрабатывает отображаемый текст, поэтому ваши вызовы 'setText()' игнорируются или переопределяются. – Brucelet

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