两次使用自定义布局时,设备旋转时复选框状态的更改

时间:2019-03-25 10:49:43

标签: android xml layout

我正在使用日期和时间选择器的自定义布局,其中包含一个复选框。 此自定义布局在父布局中使用了两次。 更改设备方向时,两个复选框的选中状态都会自动设置为第二个复选框的选中状态。

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>

在更改设备方向时,第一复选框的选中状态应保留。

2 个答案:

答案 0 :(得分:0)

尝试使用booleans方法将实际状态保存在两个onSaveInstance中。然后恢复onRestoreInstance中的值,并将值设置为checkBox。希望对您有帮助!

答案 1 :(得分:0)

在您的布局中提供这样的ID

<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"