java - 数据绑定(bind);查看标签不正确,Android

标签 java android android-layout data-binding view

我在数据绑定(bind) Android 教程中卡住了。我发现我在将数据绑定(bind)到 View 时遇到了问题。

 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);          <---
 } }

数据 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_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="16dp"
        tools:showIn="@layout/content_main"
        tools:context=".DataView">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            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)

删除绑定(bind)声明解决了问题,但我没有自定义 View 。 :) 任何

最佳答案

这样改

<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_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="16dp"
        tools:showIn="@layout/content_main"
        tools:context=".DataView">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@{dataSource.message}" />
    </com.example.kaz.simplebindingdemo.DataView>
</layout>

关于java - 数据绑定(bind);查看标签不正确,Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36236416/

相关文章:

Android数据绑定(bind)view.onTouchListener

android - 基于主开关的灰显设置?

android - 在android :src for ImageView using data binding in Android中设置drawable资源ID

java - 在迭代 HashMap 时将对象设置为 null 是否会对对象的状态产生影响

java - 在 Java 中设置 GUI 窗口焦点在行上

java - 使用 ksoap2-android 时出现异常

android - 如何在选项卡中制作 Snackbar Match_Parent?

java - 如何使 JavaFX 在 mac(Visual Studio Code) 上工作?

android - 没有连接到授权服务器。 eclipse 的 Testdroid 插件

java - Android - 在视频上创建圆形蒙版