4
val scoreFragmentArgs1 by navArgs<ScoreFragmentArgs>() 

val scoreFragmentArgs2 = ScoreFragmentArgs.fromBundle(arguments!!)

我可以使用上述任何语句访问从前一个片段传递的参数。有人可以解释区别以及何时使用它们。提前致谢

4

1 回答 1

6

第二个调用更简单。每当该行运行时,都会对其进行热切评估,因此它将要求arguments捆绑包已经就位,并包含您希望在其中包含的所有密钥。


第一种方法给你一个懒惰创建的Args实例,它只会在你第一次尝试读取它的值时被初始化。因此在类级别声明它是安全的。有关所有详细信息,请参阅navArgs文档。最重要的部分:

强烈建议仅在使用androidx.navigation.NavController.navigate相应androidx.navigation.NavDirections对象启动 Activity 时使用此方法,以确保存在所需的参数。

该属性只有在Activity附加到应用程序后才能访问,在此之前访问将导致IllegalStateException.

于 2019-07-15T06:58:54.303 回答