[英]'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
類型的內容字段。 這確實假設someVar
在activity_main.xml
和layout_content.xml
中都被聲明。
Android Studio中的錯誤指向了正確的位置,但很難理解。 將來,您可以在app/build
目錄中查找生成的綁定類。 這可以幫助您找出錯誤的含義。
我已經提交了一個錯誤來修復錯誤 - 我們應該為包含ID的公共最終字段生成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.