Android:不同导航图java/kotlin的不同ViewModel实例

Android:不同导航图java/kotlin的不同ViewModel实例,java,android,kotlin,android-viewmodel,android-navigation,Java,Android,Kotlin,Android Viewmodel,Android Navigation,我使用的是Android导航组件,我有一个片段FragA,它在多个导航图中被重用,我想在每个图中都有这个FragA的不同ViewModel实例。 我环顾四周,发现了navGraphViewModels(R.id.child_graph)的,但这需要知道我来自哪个图形,但我不知道,因为FragA正在被重用 我无法在arguments/bundle中传递图形,因为通过navGraphViewModels(arguments.getInt)执行类似于private val childGraphScop

我使用的是Android导航组件,我有一个片段FragA,它在多个导航图中被重用,我想在每个图中都有这个FragA的不同ViewModel实例。 我环顾四周,发现了navGraphViewModels(R.id.child_graph)的
,但这需要知道我来自哪个图形,但我不知道,因为FragA正在被重用

我无法在arguments/bundle中传递图形,因为通过navGraphViewModels(arguments.getInt)执行类似于
private val childGraphScopedViewModel:childGraphScopedViewModel的操作将无法工作,{
因为调用代码行时参数仍然为Null

所以我的问题是如何使图形id动态化? 我是否必须编写通过navGraphViewModels镜像
的自定义实现?

(在java/kotlin中,我也可能需要这样的东西才能工作)

我可以建议您对每个图形使用FragA的SubFrag1、SubFrag2

open class FragA

class SubFrag1: FragA()

class SubFrag2: FragA()

您想要同一类或不同类的不同ViewModel实例吗?@denvercoder9在两个不同导航图中打开的相同FragA的不同ViewModelA实例由viewModels()打开,而不是由navGraphViewModels(..)打开
。请阅读此答案以及可能解释某些内容的注释。此外,请阅读
viewModels()
navGraphViewModels()上的文档
谢谢,我希望我可以避免扩展该类,一定要记住它。我看不到其他解决方案,因为在任何片段中创建的viewmodel都将存在并重复使用,直到它被销毁。