簡體   English   中英

'無法找到符號變量'在android數據綁定中包含布局

[英]'cannot find symbol variable' in android data binding include layout

layout_content.xml

<layout>
    <android.support.design.widget.AppBarLayout
     android:id="@+id/appbar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

     <android.support.v7.widget.Toolbar
         android:id="@+id/toolbar"
         android:layout_width="match_parent"
         android:layout_height="?attr/actionBarSize"
         android:background="?attr/colorPrimary"
          />
    </android.support.design.widget.AppBarLayout>
</layout>

layout_main.xml

<layout>
    <android.support.v4.widget.DrawerLayout
    android:id="@+id/dl_main_drawer"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

       <include layout="@layout/layout_content" android:id="@+id/content"/>

    </android.support.v4.widget.DrawerLayout>
</layout>

MainActivity.java

LayoutMainBinding binding = DataBindingUtil.setContentView(this,R.layout.layout_main);
setSupportActionBar(binding.content.toolbar);

Android Studio intellisense檢查binding.content是ViewDataBinding obj

但是構建錯誤'找不到符號變量內容'這有什么問題嗎? 謝謝!

布局activity_main.xml

<layout>
    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context=".MainActivity">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <include layout="@layout/layout_content" android:id="@+id/content" />

        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>
</layout>

生成ActivityMainBinding.java 在MainActivity.java中,您可以在setSupportActionBar參數中使用生成的字段作為content

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ActivityMainBinding binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
    setSupportActionBar(binding.content.toolbar);
}

通常,布局將為每個視圖生成公共最終字段,其中包含android:id s和每個包含ID的Binding子類。 在這種情況下,數據綁定系統沒有檢測到包含的內容@layout/layout_content是綁定布局,因此沒有捕獲include的Binding類。

當變量綁定到include時,數據綁定系統將使用它來確定包含的布局是綁定布局。 所以,如果您的布局改為:

<include layout="@layout/layout_content"
         android:id="@+id/content"
         app:someVar="@{someVar}" />

您已經獲得了LayoutContentBinding類型的內容字段。 這確實假設someVaractivity_main.xmllayout_content.xml中都被聲明。

Android Studio中的錯誤指向了正確的位置,但很難理解。 將來,您可以在app/build目錄中查找生成的綁定類。 這可以幫助您找出錯誤的含義。

我已經提交了一個錯誤來修復錯誤 - 我們應該為包含ID的公共最終字段生成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM