gpt4 book ai didi

android - 通过 xml 将变量传递给包含的布局

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:47 29 4
gpt4 key购买 nike

我想包含一个简单的布局并向其传递一个静态变量(此处为字符串资源)。我 followed multiple examples没有运气。

main_layout.xml

<?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">
<data></data>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include android:id="@+id/first_included" layout="@layout/included" app:theValue="@string/firstValue" />
<include android:id="@+id/first_included" layout="@layout/included" app:theValue="@string/secondValue" />
</LinearLayout>
</layout>

included.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable name="theValue" type="String" />
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{theValue}"/>
</layout>

这给了我编译错误

Error: No resource identifier found for attribute 'theValue' in package 'com.just.example'

我确实在项目的其余部分使用了数据绑定(bind),一切正常。我可以通过编程方式设置值,但这个值是静态的,我希望能够在布局文件中设置它。

最佳答案

通常,您必须将数据绑定(bind)语句分配给您要使用它的属性。如果默认 XML 定义很好地支持属性本身,它就不会失败。但是当属性没有定义时(除了带有数据绑定(bind)的显式和隐式定义的属性),属性无法被处理,你会发现你得到的错误。

因此,无论何时您使用数据绑定(bind)特定属性(例如包含布局的变量),您都需要将其定义为

app:myAttr="@{...}"

Expression Language本身有一些很好的定义资源的快捷方式。所以在你的情况下,你可以在你的表达式中使用 @string/firstValue。这将被解析为一个 String,它又被分配给子布局中的变量 theValue

关于android - 通过 xml 将变量传递给包含的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44914117/

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