NavGraph字符串类型默认参数被解析为数字的异常问题
当传递纯数字格式的字符串作为Fragment的默认参数时,参数未被正确接收为原字符串,出现异常转换:
复现步骤
- 将目标Fragment设置为NavGraph的
startDestination - 为该Fragment添加字符串类型的默认参数,且参数值仅包含数字
- 值较短时(如
"987987")可正常接收 - 值约15位时(例如
"987987987987987"),会被接收为"9.8798797E14" - 值约30位时,会被接收为
"infinity"
- 值较短时(如
使用的Navigation版本:2.5.3
NavGraph 配置
<?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
相关产品推荐
相关产品推荐

