我想使用导航组件和深层链接打开一个片段。
val serializedUser = Gson().toJson(user)
findNavController().navigate(Uri.parse("myapp://?user=${serializedUser}"))
但在目标片段中有时变元不完整。
val serializedUser = arguments?.getString("user")
val post = Gson().fromJson(serializedUser, User::class.java)
并得到以下错误:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 1156 path $.text
如果我在目标片段中记录serializedUser
,则这不完整,且在其结尾处某些字符不存在,而在第一片段中它是完整的。
序列化模型是一个很长的字符串,但它的长度似乎与此问题无关,因为某些较长的序列化模型正在工作。
只有在使用导航组件深层链接时才会出现此问题。
1条答案
按热度按时间woobm2wo1#
Uri.parse(String)
解析编码的URI字符串,但您没有对serializedUser
进行编码。要解决这个问题,您应该使用
Uri.fromParts(...)
或Uri.Builder
类,因为它不需要您对serializedUser
进行编码。