我正在尝试从官方谷歌文档https://developer.android.com/tools/data-binding/guide.html关注数据绑定示例
除了我试图将数据绑定应用于片段,而不是活动.
编译时我目前得到的错误是
Error:(37, 27) No resource type specified (at 'text' with value '@{marsdata.martianSols}.
onCreate 对于片段看起来像这样:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MartianDataBinding binding = MartianDataBinding.inflate(getActivity().getLayoutInflater());
binding.setMarsdata(this);
}
Run Code Online (Sandbox Code Playgroud)
onCreateView 对于片段看起来像这样:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.martian_data, container, false);
}
Run Code Online (Sandbox Code Playgroud)
我的片段布局文件的部分内容如下所示:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="marsdata"
type="uk.co.darkruby.app.myapp.MarsDataProvider" />
</data>
...
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@{marsdata.martianSols}"
/>
</RelativeLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
我怀疑是MartianDataBinding不知道它应该绑定哪个布局文件 - 因此错误.有什么建议?
By default, a Binding class will be generated based on the name of the layout
file, converting it to Pascal case and suffixing “Binding” to it.
The above layout file was activity_main.xml so the generate class was ActivityMainBinding.
Run Code Online (Sandbox Code Playgroud)
什么时候会生成Binding类,比如说ActivityMainBinding.我有编译时错误."无法解析ActivityMainBinding".
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.谢谢
使用数据绑定时,我无法MainActivityBinding 按照数据绑定指南获取类
我的布局名称是activity_main.xml.我也看到了Android - DataBinding - 如何以及何时生成Binding类?但它无法帮助我.
我开始使用DataBinding功能了.我面临着问题.
错误:(21,9)错误:找不到符号类ContactListActivityBinding
build.gradle(模块:app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.letsnurture.ln_202.databindingdemo"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
Run Code Online (Sandbox Code Playgroud)
ContactListActivity.java
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import com.letsnurture.ln_202.databindingdemo.model.Contact; …Run Code Online (Sandbox Code Playgroud) 我正在使用DataBinding库.当我将布局文件添加到项目中或将任何视图添加到布局文件中时,Android Studio无法为布局生成Binding类,直到重建项目为止.
布局文件:
<?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"
tools:context=".MainActivity">
<data>
<variable
name="viewModel"
type="com.qk365.thweeks.MainViewModel" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/main_tab"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:elevation="5dp"
app:tabGravity="fill"
app:tabIndicatorHeight="0dp"
app:tabMode="fixed"
app:tabSelectedTextColor="#7343ea"
app:tabTextAppearance="@style/TextAppearance.Design.Tab"
app:tabTextColor="#181818" />
<android.support.v4.view.ViewPager
android:id="@+id/main_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/main_tab">
</android.support.v4.view.ViewPager>
</RelativeLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
我检查了Android Studio日志,当布局文件发生变化时,总会有错误信息.
2018-04-17 11:20:01,699 [e-1024-b02] ERROR - .intellij.psi.impl.ElementBase - Element: class com.intellij.psi.impl.source.xml.XmlFileImpl because: different providers: SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(5200996b); SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(398a3993)
invalidated at: see attachment
com.intellij.psi.PsiInvalidElementAccessException: Element: class com.intellij.psi.impl.source.xml.XmlFileImpl because: different providers: SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(5200996b); SingleRootFileViewProvider{myVirtualFile=file://E:/AndroidStudioProjects/thweeks/module-order/src/main/res/layout/order_fragment_pick_up_order.xml, content=VirtualFileContent{size=2845}}(398a3993) …Run Code Online (Sandbox Code Playgroud) 我想知道以下有什么区别:
binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);
Run Code Online (Sandbox Code Playgroud)
VS
binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);
Run Code Online (Sandbox Code Playgroud)
有任何性能差异吗?
每个的首选用例是什么?
任何其他信息将不胜感激!
谢谢!
我有一个 Fragment 显示包含天气信息的城市列表。我正在使用 RecyclerView 并且我正在尝试在我的 RecyclerView Adapter 中实现数据绑定库,但由于某种原因,我收到此编译错误:
> error: cannot find symbol import
com.example.zach.weatherapp.databinding.CityListItemBindingImpl;
> ^
> symbol: class CityListItemBindingImpl
> location: package com.example.zach.weatherapp.databinding
Run Code Online (Sandbox Code Playgroud)
这是一个自动生成的类,所以我真的不知道错误在哪里。当 xml 文件中出现错误时,我以前对其他布局也有同样的错误,但在这里似乎没问题。
预测适配器.kt
package com.example.zach.weatherapp.Adapter
import ...
class ForecastAdapter(var myDataset: List<City>) :
RecyclerView.Adapter<ForecastAdapter.ForecastViewHolder>() {
var context:Context?=null
// Provide a reference to the views for each data item
// Complex data items may need more than one view per item, and
// you provide access to all the views for a data item in a …Run Code Online (Sandbox Code Playgroud) android android-fragments kotlin android-recyclerview android-databinding
我正在尝试按照官方文档将我的应用程序迁移到 AndroidX 。我运行重构选项:迁移到 AndroidX。
起初,我遇到了一些错误,但已通过重新启动和清理我的项目来解决。然后我遇到了一个问题STRING_TOO_LARGE(参见Stack Overflow 问题),我通过将 gradle 构建工具降级到 3.1.3 来解决。
但现在我在数据绑定方面遇到了困难。迁移工具取代了我所有的
import android.databinding.**
Run Code Online (Sandbox Code Playgroud)
经过
import androidx.databinding.**
Run Code Online (Sandbox Code Playgroud)
但我有错误消息
无法解析 androidx.databinding。
他们有什么我应该做的事情才能让它发挥作用吗?
databinding我试图通过退缩来回到过去
import android.databinding.**
Run Code Online (Sandbox Code Playgroud)
而不是那个,但我随后在使用内部 xml 布局androidx时出现错误,说LiveData
找不到参数类型为 androidx.lifecycle.MutableLiveData 的属性的设置器。