gpt4 book ai didi

android - 如何将数据变量传递给包含的布局?

转载 作者:行者123 更新时间:2023-11-29 16:28:50 25 4
gpt4 key购买 nike

有没有办法将数据变量传递给包含的布局?

父布局

<?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:showIn="@layout/fragment_settings">

<data>

<variable
name="viewModel"
type="......settings.SettingsFragmentViewModel" />
</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:overScrollMode="never"
android:padding="@dimen/spacing_default">

<include
android:id="@+id/main"
layout="@layout/layout_settings_main" />

</androidx.constraintlayout.widget.ConstraintLayout>

并希望在包含的布局中包含 viewModel

<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:showIn="@layout/fragment_settings">

<data>

<variable
name="viewModel"
type="......settings.SettingsFragmentViewModel" />
</data>

<merge>
...........

或者只有这样设置才有可能:

 binding = FragmentSettingsBinding.inflate(inflater, container, false).apply {
lifecycleOwner = this@SettingsFragment
viewModel = this@SettingsFragment.viewModel
main.viewModel = this@SettingsFragment.viewModel
}

最佳答案

include 标签内的父级 xml 中,使用 bind:viewModel 将数据变量传递给包含的布局。

<?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"
xmlns:bind="http://schemas.android.com/apk/res-auto"
tools:showIn="@layout/fragment_settings">

<data>

<variable
name="viewModel"
type="......settings.SettingsFragmentViewModel" />
</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:overScrollMode="never"
android:padding="@dimen/spacing_default">

<include
android:id="@+id/main"
layout="@layout/layout_settings_main"
bind:viewModel="@{viewModel}" />

</androidx.constraintlayout.widget.ConstraintLayout>

您包含的布局将在 viewModel 中获取对象实例。

更多详情请查看this教程

关于android - 如何将数据变量传递给包含的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58214894/

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