8

Użyłem poniżej switch w mojej aplikacji.Sterowanie przełącznikiem nie działa w oknie dialogowym w wersji Android 5.0

<Switch 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:text="" 
     android:thumb="@drawable/toggle_button_color" 
     android:textOff="@string/text_estimate" 
     android:textOn="@string/text_accurate" 
     android:textColor="@color/white" /> 

W powyższym switch Używam toggle_button_color.xml zmienić kolor kciukiem zielony i czerwony, gdy switch jest włączony i wyłączony odpowiednio.

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_checked="false" android:drawable="@color/red" /> 
    <item android:state_checked="true" android:drawable="@color/green" /> 
</selector> 

Jeśli dodać do tego switch układ działalności, a następnie jego idealnie wokring jak poniżej obrazu. enter image description hereenter image description here

Ale jeśli dodać tę switch na Dialog wykorzystaniem m_dialog.setContentView(R.layout.mylayout); następnie przełączyć wygląda jak poniżej. Należy zauważyć, że tutaj mylayout.xml jest plikiem , w którym dodano switch.

enter image description here

dla Androida w wersji 5.0 poniżej lizak switch pracuje bez zarzutu, jak chcę. Zauważ, że z pewnych powodów używam Theme.Holo.Light w mojej aplikacji, więc nie mogę użyć SwitchCompat.

Wiem, że podobne pytanie zostało zadane tutaj Switch crashes when clicked on Android 5.0.

A także jest tutaj zgłaszane https://code.google.com/p/android-developer-preview/issues/detail?id=1704. Próbowałem również pracy wokół, który jest wymieniony w powyższym linku, aby dodać rysowany obraz dla kciuka i utworu, ale nie rozumiem, dlaczego ten sam przełącznik działa na activity layout, ale nie na Dialog.

Czy ktokolwiek może mi w tym pomóc?

+0

Podążyłem za twoją konfiguracją dostępnymi informacjami (tj. Nie wiem, jak skonfigurowałeś swój dialog), ale nie mogę odtworzyć tego samego wyniku - przełącznik działa na Nexusie 7 2013 z Androidem 5.1 i emulator Androida 5.0. Podaj więcej szczegółów. – Kai

Odpowiedz

1

Dziękuję wszystkim za odpowiedź, ale rozwiązałem ją samodzielnie. Wcześniej wdrażałem okno dialogowe przy użyciu klasy Dialog, co było przyczyną problemów.

Dialog mDialog= new Dialog(getActivity(),android.R.style.Theme_Dialog); 
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
mDialog.setContentView(R.layout.mylayout); 

Próbowałem nawet zmienić themes, ale to nie pomogło.

Następnie spróbowałem użyć DialogFragment, który rozwiązał problem.

public class MyDialog extends DialogFragment{ 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
    View v = inflater.inflate(R.layout.mylayout, container, false); 
    return v; 
    } 
} 

iz mojego Activity klasy I wywołać tę Dialog jak poniżej.

MyDialog mDialog = new MyDialog(); 
mDialog .show(getFragmentManager(), "Hello"); 
0

nie mogę być pewny, nie widząc swoją Dialog kod instancji (należy dodać, że jeśli można), ale wygląda na to, istnieje rozbieżność pomiędzy Theme wykorzystywane do Twojego Activity a tematem są wykorzystywane do Dialog. Możesz eksperymentować z jawnym określaniem wartości Dialog przy użyciu public Dialog (Context context, int theme)constructor.