Android数据绑定导致包含布局出现问题

问题描述 投票:0回答:1

你好希望你一切都好。我将项目从旧版本迁移到了最新版本,即29。我解决了所有错误。问题是我无法解决工具栏错误。

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

    <data>

        <variable
            name="controller"
            type="com.cvvm.Controller" />

        <variable
            name="menu"
            type="java.lang.Integer" />

        <variable
            name="itemClickListener"
            type="androidx.appcompat.widget.Toolbar.OnMenuItemClickListener" />

        <import type="com.bonnti.misc.NavigationClickListener" />
    </data>

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@drawable/btn_red_gradient"
        android:title="@{controller.title}"
        app:showBackButton="@{controller.previous != null}"
        app:itemClickListener="@{itemClickListener}"
        app:navigationClickListener="@{(NavigationClickListener)controller}"
        app:menu="@{menu}"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

</layout>

并且我将其包括在其他这样的布局中

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

    <data>

        <variable
            name="controller"
            type="com.bonnti.screens.combthru.combthruitem.ItemCombthruController" />


        <import type="com.bonnti.R" />

        <import type="com.bonnti.misc.utils.TextUtils" />
    </data>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <RelativeLayout
            android:id="@+id/toolbar_item_combthru"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <include
                layout="@layout/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:controller="@{controller}" />

            <LinearLayout
                android:id="@+id/linearLayout2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginTop="4dp"
                android:layout_marginRight="@dimen/size_2dp"
                android:clickable="true"
                android:onClick='@{controller::onThreeDotsClick}'
                android:padding="@dimen/size_10dp"
                android:visibility='@{controller.isThreeDotsVisible}'>

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="6dp"
                    android:src="@drawable/ic_point_first_white" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="6dp"
                    android:src="@drawable/ic_point"
                    android:tint="@color/white" />

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="6dp"
                    android:src="@drawable/ic_point"
                    android:tint="@color/white" />

            </LinearLayout>
        </RelativeLayout>


        <include
            android:id="@+id/list"
            layout="@layout/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/toolbar_item_combthru"
            android:layout_marginBottom="@dimen/size_40dp"
            app:adapter="@{controller.adapter}"
            app:loadMoreListener="@{controller}" />

        <RelativeLayout
            android:id="@+id/input"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@color/white"
            android:padding="@dimen/size_10dp"
            android:visibility='@{controller.isCommentMode}'>

            <ImageView
                android:id="@+id/ic_im"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:scaleType="centerInside"
                app:srcCompat="@drawable/ic_combthru_comments" />

            <EditText
                android:id="@+id/et_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="@dimen/size_10dp"
                android:layout_marginRight="@dimen/size_10dp"
                android:layout_toStartOf="@+id/ic_sent"
                android:layout_toEndOf="@+id/ic_im"
                android:background="@null"
                android:hint="@string/comment"
                android:textColor="@color/textColor"
                android:textSize="@dimen/size_14sp" />

            <ImageButton
                android:id="@+id/ic_sent"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_alignParentRight="true"
                android:background="@null"
                android:onClick='@{controller::sentComment}'
                android:scaleType="centerInside"
                app:srcCompat="@drawable/ic_comb_sendcomment" />
        </RelativeLayout>


    </RelativeLayout>
</layout>

我的问题是,它给了我下面的错误。我已经尝试了从stackoverflow进行的所有操作(清理项目,破坏缓存/重新启动,重建项目,包括kotlin等),但问题没有解决。当我按app:controller =“ @ {controller}”时,它说“找不到声明”。任何帮助将不胜感激。提前致谢。

**** /数据绑定错误**** msg:在com.bonnti.databinding.ToolbarBinding上找不到参数类型为com.bonnti.screens.combthru.combthruitem.ItemCombthruController的属性“ app:controller”的设置器。文件:D:\ bonnti-android-gitlab \ app \ src \ main \ res \ layout \ layout_item_combthru.xml

java android data-binding android-databinding
1个回答
0
投票

使用bind命名空间绑定变量。然后您的根目录布局应类似于

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

并且包括一个应该是

<include
   layout="@layout/toolbar"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   bind:controller="@{controller}" />
© www.soinside.com 2019 - 2024. All rights reserved.