Android DatePicker и проблема с привязкой данных - PullRequest
0 голосов
/ 28 сентября 2018

В настоящее время у меня очень странное поведение, связанное с выбором даты и привязкой данных Android.

Я значительно упростил код, так что это моя деятельность xml:

<ScrollView ...>
        <android.support.constraint.ConstraintLayout>
            <FrameLayout
                android:id="@+id/step1_fragment"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="@dimen/margin_small"
                app:layout_constraintVertical_chainStyle="spread_inside"
                app:layout_constraintEnd_toStartOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"/>
        </android.support.constraint.ConstraintLayout>
</ScrollView>
<Button android:id="@+id/forward_btn"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_margin="@dimen/margin_normal"
       android:enabled="@{viewModel.isAnswered}"
       android:maxWidth="100dp"
       android:onClick="@{(v)->presenter.onClickForward(v)}"
       android:text="@string/common_forward"
       android:textAlignment="center"/>

Макет фрейма содержит этот текст редактирования с помощью выбора даты:

 <EditText
        android:id="@+id/issue_date_et"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="@dimen/padding_small"
        android:layout_marginStart="@dimen/padding_small"
        android:focusable="false"
        android:inputType="date"
        android:onClick="@{(view) -> presenter.onClickDateEditText(view)}"
        android:text="@{viewModel.issuedDate}"
        app:layout_constraintEnd_toEndOf="@id/right_guideline"
        app:layout_constraintStart_toStartOf="@id/left_guideline"
        app:layout_constraintTop_toBottomOf="@+id/issue_date_label_tv"/>

Иэто в основном наблюдатель, который изменяет состояние кнопки:

public void onPropertyChanged(Observable observable, int i) {
        if (i != BR.answered) {
            mModel.setAnswered(!Utils.checkStringIsNull(mModelID.getIssuedDate())
            );
        }
    }

Я почти уверен, что все работает хорошо, действительно, функция корректно срабатывает, когда модель .DidDate была заполнена,тогда модель answer устанавливается в значение true.Это уведомляет представление об изменении его включенного статуса.Я выполнил некоторую отладочную работу над классом DataBindingIml и увидел, что он вызывает метод setEnabled с параметром true на кнопке.Я видел, как включенное состояние кнопки мигало на экране в течение нескольких миллисекунд и внезапно возвращалось в отключенное состояние.

Я думаю, что кнопка вернется в отключенное состояние, когда текст редактирования Issue_Date_et будет записан внутри выбранной даты.Возможно, что запись в тексте редактирования внутри фрагмента приведет к тому, что родительское действие вернет ранее нарисованное состояние?Или я что-то делаю с данными?

...