当前位置: 首页 > 知识库问答 >
问题:

如何使用片段数据绑定

穆阳嘉
2023-03-14

我试图遵循官方google文档https://developer.android.com/tools/data-binding/guide.html中的数据绑定示例

只是我试图将数据投标应用于一个片段,而不是一个活动。

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

错误:(37,27)未指定资源类型(位于“text”,值为“@{marsdata.martiansols}”。

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    MartianDataBinding binding = MartianDataBinding.inflate(getActivity().getLayoutInflater());
    binding.setMarsdata(this);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.martian_data, container, false);
}
<?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不知道它应该绑定到哪个布局文件-因此出现错误。有什么建议吗?

共有1个答案

堵睿范
2023-03-14

数据绑定实现必须在片段的OnCreateView方法中,删除OnCreate方法中存在的任何数据绑定,您的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;
}
 类似资料:
  • 下面是logcat: 12-15 13:15:30.763 295 33-29533/com.example.hieul.hismartversearch e/androidruntime:致命异常:main process:com.example.hieul.hismartversearch,pid:29533 java.lang.nullpointerexception:试图在Android.

  • 我正在尝试通过将数据与接口传递给片段来将数据从对话片段获取到片段。到目前为止,我知道首先是因为它的片段,我需要在MainActive上实现接口,并从那里将数据发送到我想要的任何片段。我明白,但我不知道如何做到这一点。到目前为止,我已经在MainActive中实现了接口,我正在获取数据,但我不知道如何将其发送到片段。 主要活动 对话片段-此对话片段从画廊/相机获取图片 片段-此片段应从dialogf

  • 在此处输入图像描述 在此处输入图像描述 类MainActivity:AppCompatActivity(){lateinit var binding:ActivityMainBinding重写fun onCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)binding=ActivityMainBinding.i

  • 我有一个活动应用程序,底部有导航标签,使用Android架构导航组件。 以下是其中一个片段的代码: 它有两个可能的版本(一个是带有数据绑定的版本,注释为)。 没有数据绑定的当前版本可以正常工作,但是有数据绑定的版本会全屏显示片段,而不是在androidx中显示片段。航行碎片这是我主要活动的一部分。数据绑定是有效的,我的问题是片段全屏显示,试图通过编程从该片段导航是无效的。所以在这种情况下,数据绑定

  • 我怎样才能做到这一点呢?我如何提供或绑定活动或片段与刀柄?

  • 我试图使用另一个片段中的数据填充我的Listview。 我可以从另一个片段获取数据,但当我尝试创建listview对象时,它返回null。 结果,该应用程序正在崩溃。 我从一个片段中获取用户的数据,然后从另一个片段中调用一个方法来传递数据。我正在第二个方法的poplist()方法中创建listview对象和数组适配器。但是,由于空指针异常,应用程序正在崩溃。请帮忙。 我尝试了以下方法,但不起作用