2013-08-02 3 views
1

После установки кнопки переключения на проверено состояние, каждый раз, когда я нажимаю на него, оно находится в том же состоянии.Пользовательский ToggleButton setChecked (..) issue

пользовательский селектор:

<?xml version="1.0" encoding="utf-8"?> 

<item android:drawable="@drawable/list_view_icon" android:state_checked="true" 
    android:state_pressed="true" android:state_enabled="true"/> 
<item android:drawable="@drawable/list_view_icon" android:state_checked="true" 
    android:state_focused="false" android:state_enabled="true"/> 

<item android:drawable="@drawable/map_view_icon" android:state_checked="false" 
    android:state_pressed="true" android:state_enabled="true"/> 
<item android:drawable="@drawable/map_view_icon" android:state_checked="false" 
    android:state_focused="false" android:state_enabled="true"/>  

кнопка переключения:

<ToggleButton 
     android:id="@+id/toggle_button_map_or_list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:button="@drawable/custom_selector" 
     android:textOn="" 
     android:textOff="" 
     android:background="@drawable/map_view_icon"    
     /> 

Java код:

В кнопки OnClick слушателем, isChecked всегда ложно

boolean isChecked = ((ToggleButton) view).isChecked();  

Log.i(TAG, "isChecked : "+isChecked); 
// **its always false and image also not changing.** 

Пожалуйста, предложите что случилось здесь.

Я посмотрел this ответ, но не использовать.

Редактировать: Я сделал образец проекта с тем же сценарием. Он работает отлично, но в моем проекте Fragment, он ведет себя по-другому.

+0

Вы можете иметь веские причины, но почему вы не используете ToggleButton? Я могу передать код, который использует эти представления. – iaindownie

ответ

1

Здесь для вас:

<?xml version="1.0" encoding="utf-8"?> 

<item android:drawable="@drawable/list_view_icon" 
     android:state_checked="true" /> 

<item android:drawable="@drawable/map_view_icon" 
     android:state_checked="false" /> 

Вы приложили много условий для различных состояний, и это то, что вызывает проблему (см here для получения дополнительной информации).

После вашего EDIT:

<ToggleButton 
     android:id="@+id/toggle_button_map_or_list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:button="@drawable/custom_selector" 
     android:textOn="" 
     android:textOff="" 
     android:background="@drawable/selector_name"    
     /> 

Это будет исправить это для вас точно! Вы используете значок карты напрямую и никогда не проходите через селектор.

+0

Я пробовал это раньше. Даже для этих простых состояний, как только я установил проверочный код Java, последующие щелчки на кнопке не меняют изображение, а состояние не являются ложными. – Braj

+0

Хорошо, тогда вопрос в том, как вы используете селектор? – g00dy

+0

отредактированный вопрос. Пожалуйста, посмотрите. – Braj

-1

Селекторы имеют заказ (см. Drawable States).

Удалить атрибут android:button. Установите селектор в качестве фона для вашего ToggleButton:

<ToggleButton 
    android:id="@+id/toggle_button_map_or_list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOn="" 
    android:textOff="" 
    android:background="@drawable/custom_selector"/> 

И custom_selector.xml выглядит следующим образом:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Checked and pressed --> 
    <item 
     android:state_checked="true" 
     android:state_pressed="true" 
     android:drawable="@drawable/list_view_icon" /> 
    <!-- Pressed --> 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/map_view_icon" /> 
    <!-- Checked --> 
    <item 
     android:state_checked="true" 
     android:drawable="@drawable/list_view_icon" /> 
    <!-- Default (not checked) --> 
    <item 
     android:drawable="@drawable/map_view_icon"/> 
</selector> 
+0

результат такой же :( – Braj

+0

Просто переименуйте свой selector.xml и установите его как фон. Не используйте одно и то же имя для значка и селектора! – Nipper

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