Android Условная строка в Textview с привязкой данных не оценивается - PullRequest
0 голосов
/ 03 марта 2020

Я теперь очистил сеть, не найдя решения для моей проблемы.

Моя проблема в том, что у меня есть TextView, и в нем я хотел бы отображать текст, используя атрибут android:text , Этот текст должен быть извлечен из @string условно в зависимости от того, что работает FLAVOR.

Я завернул файл макета xml в теги <layout></layout> и только внутри этих тегов, которые я импортировал некоторые классы:

 <data>
    <import type="esy.es.matmatt.pidroCounter.BuildConfig"/>
    <import type="android.view.View"/>
</data>

Для условного отображения различного текста в Textview в зависимости от FLAVOR у меня есть следующее TextView:

<TextView
        android:text="@{String.valueOf(BuildConfig.FLAVOR.equals(`free`) ? @string/about_text : @string/about_textPro)}"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textViewFree"
        android:layout_below="@+id/aboutTitle"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:textAlignment="center"
        android:autoLink="email"
        android:textColorLink="@color/textn"/>

Я не знаю, почему это просто выводит пустой TextView .. Он не отображает ни одного ...

Я прочитал в этом сообщении, что у меня должен быть знак = после @ , но когда я добавил, что вместо этого я получил ошибку компиляции:

M:\Git Repositories\PidroCounter\app\build\generated\ap_generated_sources\freeDebug\out\esy\es\matmatt\pidroCounter\DataBinderMapperImpl.java:10: error: cannot find symbol import esy.es.matmatt.pidroCounter.databinding.FragmentAboutBindingImpl;
                                          ^

Я просто не могу найти ошибку. Импортируемый и условный синтаксис, который я использую, кажется, хорошо работает с видимостью объявлений, но не с TextViews. Я понятия не имею, что я делаю неправильно. Любые идеи? Спасибо!

РЕДАКТИРОВАТЬ: На самом деле я теперь понял, что условия не работают в объявлениях (XML). Я думал, что причина в том, что я тоже загружаю MobileAds программно ...

1 Ответ

0 голосов
/ 03 марта 2020

Я думаю, что ваша проблема присутствует в выражении связывания, которое вы написали из-за использования String.valueOf. Это должно быть

android:text="@{BuildConfig.FLAVOR.equals(`free`) ? @string/about_text : @string/about_textPro}"

В случае, если это не сработает, откройте класс BindingImpl.java (Например: YourLayoutNameBindingImpl.java), созданный привязкой данных. Найдите идентификатор просмотра (textViewFree) и опубликуйте сгенерированный код здесь.

...