Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android将枚举变量从一个xml传递到包含的xml文件,然后将其发送到代码_Android_Xml_Enums_Android Databinding_Android Include - Fatal编程技术网

Android将枚举变量从一个xml传递到包含的xml文件,然后将其发送到代码

Android将枚举变量从一个xml传递到包含的xml文件,然后将其发送到代码,android,xml,enums,android-databinding,android-include,Android,Xml,Enums,Android Databinding,Android Include,我正在尝试重用一个包含在main_layout.xml中的xml文件。在我的活动代码中,我检查变量“positionType”,并根据该变量运行不同的代码 PositionType.java public enum PositionType { play_top, grow_top, love_top } main_layout.xml <layout xmlns:android="http://schemas.android.com/apk/res/android"

我正在尝试重用一个包含在main_layout.xml中的xml文件。在我的活动代码中,我检查变量“positionType”,并根据该变量运行不同的代码

PositionType.java

public enum PositionType {
    play_top, grow_top, love_top
}
main_layout.xml

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


    <data>
        <import type="com.xxx.models.PositionType"/>
        <variable name="positionType"  type="com.xxx.models.PositionType"/>
    </data>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        >

            <include
                android:id="@+id/circle_view_play_top"
                app:positionType="${PositionType.play_top}"
                layout="@layout/include_circle"
                />

[...]
问题是,我从未在我的DeformedCircleView构造函数或setPositionType设置器中收到PositionType.play\u top(我从main\u layout.xml发送的)值。我做错了什么

顺便问一下,您是否知道如何从main_layout.xml传递其他参数以包括_circle.xml,如@id和带有/height资源的布局


提前感谢。

您的问题中是否有输入错误,或者您是否真的在使用
app:positionTypeStr
setPositionType()
?我希望使用该属性调用
setPositionTypeStr()
方法。您可以使用
app:whateverVar=“@{someValue}”
将所需的任何变量从外部布局传递到包含的布局。必须明确所有变量。我不确定您是否希望将布局参数传递给数据绑定,因为默认情况下不支持它们。不过,它是可以添加的,所以在上面搜索堆栈溢出问题。嗨,乔治,这是一个打字错误。我在密码里就有。谢谢你的评论。在这种情况下,我看到的唯一错误是:
app:positionType=“${positionType.play_top}”
它应该是
app:positionType=“@{positionType.play_top}”。通常,您会立即注意到这一点,因为您会看到一个错误,该错误表示app:positionType`属性不存在。如果您必须在attrs.xml中添加该属性,那么您确实看到了这个问题,这是有道理的。我试过了,但还是不工作。传递的值为null。谢谢你的帮助。
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable name="positionTypeStr" type="com.xxx.models.PositionType"/>
    </data>

    <merge>
        <com.xxx.components.DeformedCircleView
            app:positionTypeStr="@{positionTypeStr}"
            android:clickable="true"
            android:layout_width="@dimen/home_small_circle_view"
            android:layout_height="@dimen/home_small_circle_view"/>
    </merge>

</layout>
[...]

protected PositionType positionType;

public DeformedCircleView(Context context, AttributeSet attrs) {
    super(context, attrs);
    //I should receive here the PositionType.play_top (not sure how!) or in the setter
}

public PositionType getPositionType() {
    return this.positionType;
}

public void setPositionType(PositionType positionType) { 
    //I should receive here the PositionType.play_top or in the constructor
    this.positionType = positionType;
}



[...]