Изменение состояния флажка поворота устройства при двойном использовании пользовательского макета - PullRequest
0 голосов
/ 25 марта 2019

Я использую пользовательский макет для выбора даты и времени, , который содержит флажок .Этот пользовательский макет используется дважды в родительском макете.При изменении ориентации устройства проверяемое состояние обоих флажков автоматически устанавливается в проверенное состояние второго флажка.

parent.xml

<LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="@dimen/spacing_normal"
                android:divider="?android:dividerHorizontal"
                android:orientation="vertical"
                android:showDividers="beginning">
                ...

                <include
                    layout="@layout/time_picker" />

                <include
                    layout="@layout/time_picker" />
                ...
</LinearLayout>

time_picker.xml

<layout xmlns:app="http://schemas.android.com/apk/res-auto">

    <LinearLayout
        ...

        <CheckBox
            android:id="@+id/picker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/use_date_time_picker"
            android:textSize="@dimen/text_size_extra_small"
            android:checked="true" />
    </LinearLayout>

</layout>

При изменении ориентации устройства проверяемое состояние флажка first должно сохраняться.

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Дайте идентификатор в вашем макете, как это

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/spacing_normal"
    android:divider="?android:dividerHorizontal"
    android:orientation="vertical"
    android:showDividers="beginning">


    <include
        android:id="@+id/vCb1"
        layout="@layout/time_picker" />

    <include
        android:id="@+id/vCb2"
        layout="@layout/time_picker" />

</LinearLayout>

Теперь создайте объект, подобный этому

    View vCb1 =  findViewById(R.id.vCb1);
    View vCb2 =  findViewById(R.id.vCb2);

    CheckBox cb1 =  vCb1.findViewById(R.id.picker);
    CheckBox cb2 =  vCb2.findViewById(R.id.picker);

Также поместите эту строку в AndroidManifest в теге

android:configChanges="orientation"
0 голосов
/ 25 марта 2019

Попробуйте сохранить действительные состояния в два booleans в onSaveInstance метод.Затем восстановите значения в onRestoreInstance и установите значения checkBox.Надеюсь, это поможет!

...