привязка данных не может найти метод - PullRequest
0 голосов
/ 01 апреля 2020

Я начал работать с привязкой данных в android, и у меня возникла проблема. При попытке создать проект возникает ошибка

Обнаружены ошибки привязки данных: [databinding] {"msg": "невозможно найти метод getMediumStringFromMilli (float) в классе com.sg c .weightcontrol.util.DateUtil", "file": "B: \ projects \ weightControl \ app \ src \ main \ res \ layout \ фрагмент_объектива. xml "," pos ": [{" line0 ": 49," col0 ": 58," line1 ": 49," col1 ": 115}]}

Мой фрагмент xml (R.layout .fragment_objective)

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

    <data>

        <import type="com.sgc.weightcontrol.util.DateUtil" />

        <variable
            name="objective"
            type="com.sgc.weightcontrol.ui.modelUI.ObjectiveUI" />
    </data>

//Container open
      <TextView android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@{`string/start_weight` + DateUtil.getMediumStringFromMilli(objective.startTime)}" " />
//Container close

</layout>

DateUtil

public class DateUtil {
    private static DateTimeFormatter dateFormatMedium =
            DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.getDefault());

    public static String getMediumStringFromMilli(long milli){
        LocalDateTime time = Instant.ofEpochMilli(milli).atZone(ZoneId.systemDefault()).toLocalDateTime();
        return dateFormatMedium.format(time);
    }

}

build.gradle

   dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
        classpath 'com.android.databinding:dataBinder:1.0-rc0'
    }

build.gradle (модуль)

dataBinding {
    enabled = true
}

Получение привязка

   FragmentObjectiveBinding binding = DataBindingUtil.setContentView(getActivity(), R.layout.fragment_objective);

Моя android -студия версии = 3.6.2

Я пытался очистить кеш / перезагрузить, изменить фрагмент xml имя файла.

1 Ответ

1 голос
/ 01 апреля 2020

Да, потому что Textview android: текст принимает только строковое значение:

android:text="@{String.format(@string/start_weight, DateUtil.getMediumStringFromMilli(objective.startTime))}"
...