val scoreFragmentArgs1 by navArgs<ScoreFragmentArgs>()
val scoreFragmentArgs2 = ScoreFragmentArgs.fromBundle(arguments!!)
我能够使用上述任何语句访问从上一个片段传递的参数。有人可以解释它们的区别以及何时使用它们。预先感谢
答案 0 :(得分:3)
第二个电话比较简单。只要该行运行,便会对其进行热切的评估,因此这将需要arguments
捆绑包已经准备就绪,并且包含您期望包含在其中的所有密钥。
第一种方法为您提供了一个延迟创建的Args
实例,该实例仅在您首次尝试读取其值时才会初始化。因此,在类级别进行声明是安全的。有关所有详细信息,请参见文档中的navArgs
。最重要的部分:
强烈建议仅在
androidx.navigation.NavController.navigate
和相应的androidx.navigation.NavDirections
对象启动Activity时使用此方法,以确保存在必需的参数。仅在将
Activity
附加到应用程序之后才能访问此属性,在此属性之前的访问将导致IllegalStateException
。