数据绑定;查看标签不正确,Android

Posted

技术标签:

【中文标题】数据绑定;查看标签不正确,Android【英文标题】:data binding; view tag isn't correct, Android 【发布时间】:2016-07-14 04:22:09 【问题描述】:

我在数据绑定 android 教程中卡住了。我发现我在将数据绑定到视图时遇到问题。

 public class DataView extends FrameLayout 
 private DataViewBinding binding;

 public DataView (Context context, AttributeSet attrs) 
     super(context,attrs);
 

 @Override
 protected void onFinishInflate()
 
     super.onFinishInflate();
     binding = DataViewBinding.bind(this);       <---
 

 @Override
 protected void onAttachedToWindow()
 
     super.onAttachedToWindow();
     DataSource dataSource = DataSource.get("Data View");
     binding.setDataSource(dataSource);          <---
  

data_view.xml

<layout>
    <data>
        <variable
            name="dataSource"
            type="com.example.kaz.simplebindingdemo.DataSource" />
    </data>
    <com.example.kaz.simplebindingdemo.DataView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_
        android:layout_
        android:paddingTop="16dp"
        tools:showIn="@layout/content_main"
        tools:context=".DataView">

        <TextView
            android:layout_
            android:layout_
            android:text="@dataSource.message" />
    </com.example.kaz.simplebindingdemo.DataView>
</layout>

在渲染中我遇到了异常:

java.lang.RuntimeException: view tag isn't correct on view:null     at
com.example.kaz.simplebindingdemo.databinding.DataViewBinding.bind(DataViewBinding.java:123)
    at
com.example.kaz.simplebindingdemo.databinding.DataViewBinding.bind(DataViewBinding.java:119)
    at
com.example.kaz.simplebindingdemo.DataView.onFinishInflate(DataView.java:22)
    at
android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:844)
    at
android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:811)    at
android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)     at
android.view.LayoutInflater.inflate(LayoutInflater.java:394)

删除绑定声明修复了问题,但我没有自定义视图。 :) 任意

【问题讨论】:

您也可以查看this教程供您参考。 【参考方案1】:

这样改

<layout
xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
    <data>
        <variable
            name="dataSource"
            type="com.example.kaz.simplebindingdemo.DataSource" />
    </data>
    <com.example.kaz.simplebindingdemo.DataView
        android:layout_
        android:layout_
        android:paddingTop="16dp"
        tools:showIn="@layout/content_main"
        tools:context=".DataView">

        <TextView
            android:layout_
            android:layout_
            android:text="@dataSource.message" />
    </com.example.kaz.simplebindingdemo.DataView>
</layout>

【讨论】:

【参考方案2】:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

这些属性应该在顶部的&lt;layout&gt;标签中

【讨论】:

以上是关于数据绑定;查看标签不正确,Android的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 正确编译项目,Gradlew 没有启用数据绑定

使用 Android MVVM 查看数据绑定集合

使用 JFace 数据绑定绑定单选按钮组的正确方法

绑定 UITextField 以查看模型变量

Angularjs用标签绑定数据并传入表单

来自 Transformation 的数据绑定 LiveData - Android Kotlin