gpt4 book ai didi

android - 如何使用 Fragment 进行数据绑定(bind)

转载 作者:IT老高 更新时间:2023-10-28 12:56:25 27 4
gpt4 key购买 nike

我正在尝试遵循官方谷歌文档 https://developer.android.com/tools/data-binding/guide.html 中的数据绑定(bind)示例

除了我试图将数据竞价应用于 fragment ,而不是 Activity 。

我目前在编译时遇到的错误是

错误:(37, 27) 未指定资源类型(在 'text' 处,值为 '@{marsdata.martianSols}。

fragment 的

onCreate 如下所示:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MartianDataBinding binding = MartianDataBinding.inflate(getActivity().getLayoutInflater());
binding.setMarsdata(this);
}

onCreateView fragment 如下所示:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.martian_data, container, false);
}

fragment 的部分布局文件如下所示:

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

我的怀疑是 MartianDataBinding 不知道它应该与哪个布局文件绑定(bind) - 因此出现错误。有什么建议吗?

最佳答案

数据绑定(bind)实现必须在fragment的onCreateView方法中,删除你的OnCreate方法中存在的所有数据Binding,您的 onCreateView 应如下所示:

public View onCreateView(LayoutInflater inflater, 
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
MartianDataBinding binding = DataBindingUtil.inflate(
inflater, R.layout.martian_data, container, false);
View view = binding.getRoot();
//here data must be an instance of the class MarsDataProvider
binding.setMarsdata(data);
return view;
}

关于android - 如何使用 Fragment 进行数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34706399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com