使用include标记的Android数据绑定不起作用

时间:2018-04-20 11:43:33

标签: java android android-layout data-binding android-databinding

我正在使用android数据绑定,每当我不使用include标签时它都能正常工作。

如果我使用 标记包含视图(即使它在应用程序上显示),但数据绑定对象无法识别所包含布局的视图。这些是我的布局文件。

internet_unavailable.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/internet_textview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:gravity="center_horizontal"
            android:text="@string/msg_internet_unavailable"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="@color/colorSecondaryText" />

        <Button
            android:id="@+id/internet_button_retry"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="@dimen/internet_margin_top"
            android:backgroundTint="@color/colorAccent"
            android:paddingEnd="@dimen/internet_padding_h"
            android:paddingStart="@dimen/internet_padding_h"
            android:text="@string/str_retry"
            android:textColor="@android:color/white" />

    </LinearLayout>
</layout>

fragment.xml之

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.ncimsl.fragments.ProgressNotesFragment">

        <include
            android:id="@+id/progress_notes_internet"
            layout="@layout/internet_unavailable" />

        <ProgressBar
            android:id="@+id/progress_notes_progressbar"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />

        <android.support.v4.widget.SwipeRefreshLayout
            android:id="@+id/progress_notes_swiperefreshlayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/progress_notes_recyclerview"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        </android.support.v4.widget.SwipeRefreshLayout>
    </FrameLayout>
</layout>

正如您所见,progressBar,swipeRefreshLayout和recyclerView正在显示建议,但包含的布局和其中的视图除外。

有什么想法解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

执行重建为我解决了这个问题。

Rebuild Project

以下是重建后我的AndroidStudio的截图:

build works

我的build.gradle:

android{
    ...
    dataBinding {
        enabled = true
    }
}

我的gradle.properties:

android.databinding.enableV2=true

答案 1 :(得分:0)

谢谢你们。我认为这是我的PC的Android Studio中的一个问题。我在另一台PC上打开了这个项目,现在它正在工作。可能我应该重新安装Android Studio并尝试一下。

enter image description here

答案 2 :(得分:0)

想将我的经验分享给那些仍然在挣扎的人...我遇到了同样的问题,直到在应用的 build.gradle 中打开 viewBinding(除了 dataBinding)才解决。 (Android Studio 4.2

buildFeatures {
    dataBinding = true
    viewBinding = true
}