导航参数双重错误:无法转义标识符“0.0”,因为它包含非法字符

Nar*_* NK 3 navigation android kotlin

在导航图参数中为 Double 设置 defaultValue 时出错。

 <argument
            android:name="lat"
            app:argType="java.lang.Double"
            android:defaultValue="0.0"
            />
        <argument
            android:name="lon"
            app:argType="kotlin.Double"
            android:defaultValue="0.0"
            />
Run Code Online (Sandbox Code Playgroud)

我已经尝试了两者java.lang.Doublekotlin.Double使用安全参数插件。

如何传递具有默认值的 Double 参数?

小智 6

您可以创建一个可序列化类并在其中存储经纬度,并将该类的对象作为导航参数中的“自定义可序列化”类型传递。

这是一个样本,

科特林

data class LatLong(
    var lat: Double = 0.0,
    var long: Double = 0.0
) : Serializable
Run Code Online (Sandbox Code Playgroud)

导航图:

<argument
        android:name="LatLong"
        app:argType="com.example.models.LatLong" />
Run Code Online (Sandbox Code Playgroud)


Fai*_*rim 5

Safe Args 目前不支持十进制类型。如果您不需要高精度但想要发送十进制值(您可以在此处找到浮点数和十进制之间的差异),则应该只使用浮点数。您可以在此处找到支持的参数类型。

如果您确实需要高精度,则需要采取一些解决方法,例如将其作为字符串发送或将整数和小数部分分解为两个整数值(因此对于 12.43,您将 12 作为一个变量发送,将 43 作为其他)。