双向绑定属性缺少Android名称空间前缀<data> <variable>

时间:2017-06-06 23:25:57

标签: android xml

尝试实现双向绑定 如上所述:

Data Binding Library

Two-way Android Data Binding - How to use two-way Data Binding to manage a layout

2-way Data Binding on Android!

但是

<variable type="com.example.gideonsassoon.avariel.datamodels.Player" name="name"/>

我收到以下消息:

  

“属性缺少Android名称空间前缀少...(Ctrl + F1)   大多数Android视图在Android命名空间中都有属性。什么时候   引用这些属性必须包含名称空间前缀,或   您的属性将被aapt解释为自定义属性。   同样,在清单文件中,几乎所有属性都应该在   android:namespace。“

如果我尝试构建它,将我文件中的所有R.置于红色状态并说明它们不存在等。

我已编辑了我的构建gradle文件

dataBinding.enabled = true

以下相关点的完整代码

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:windowSoftInputMode="adjustPan"
    tools:context="com.example.gideonsassoon.avariel.ui.MainFragmentActivity">
    <data>
        <variable type="com.example.gideonsassoon.avariel.datamodels.Player" name="name"/>
    </data>
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <android.support.v4.view.PagerTabStrip
            android:id="@+id/viewpagerStrip"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"/>
    </android.support.v4.view.ViewPager>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="7dp"
        android:layout_marginTop="34dp">

        <TextView
            android:id="@+id/tv_character_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="@string/name_colon"
            android:textAppearance="@style/TextAppearance.AppCompat.Title"
            android:textIsSelectable="false" />

        <EditText
            android:id="@+id/et_character_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:text="@={player.name}"

            android:layout_alignBaseline="@+id/tv_character_name"
            android:layout_marginStart="15dp"
            android:layout_toEndOf="@+id/tv_character_name"

            android:ems="12"
            android:hint="@string/character_name"
            android:inputType="textPersonName" />

1 个答案:

答案 0 :(得分:4)

啊,似乎我把它作为relativeLayout。它不能“绑定”所以它只能是布局。不确定这会如何影响我的整个文件,但我想我们只需看看它是如何发挥作用的。这是我的来源。但是,如果有人想回答这个问题,那将是非常感激的。

Using data binding in Android - Tutorial