You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NavGraph字符串类型默认参数被解析为数字的异常问题

当传递纯数字格式的字符串作为Fragment的默认参数时,参数未被正确接收为原字符串,出现异常转换:

复现步骤

  • 将目标Fragment设置为NavGraph的startDestination
  • 为该Fragment添加字符串类型的默认参数,且参数值仅包含数字
    • 值较短时(如"987987")可正常接收
    • 值约15位时(例如"987987987987987"),会被接收为"9.8798797E14"
    • 值约30位时,会被接收为"infinity"

使用的Navigation版本:2.5.3

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/home_nav"
    app:startDestination="@id/verifyProductFragment">
    <fragment
        android:id="@+id/verifyProductFragment"
        android:name="com.app.fragments.VerifyProductFragment"
        android:label="VerifyProductFragment" >
        <argument android:name="imeiNo"
            app:argType="string"
            android:defaultValue="987987987987987"/>
    </fragment>
</navigation>

Fragment 代码

class VerifyProductFragment : Fragment() {

    private val args by navArgs<VerifyProductFragmentArgs>()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = ComposeView(requireContext()).apply {
        setContent {
            Log.e("data", args.imeiNo)
        }
    }

}

依赖配置

def nav_version = "2.5.3"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

内容的提问来源于stack exchange,提问作者Vikalp Vashisth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:42:18