数据绑定;视图标签不正确,安卓。

5

我在进行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_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)

删除绑定声明可以解决问题,但是我没有自定义视图。 :) 任何。

你还可以参考这个教程 - Chintan Rathod
2个回答

0

改成这样

<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>

0
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

这些属性应该放在顶部的 <layout> 标签中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接