我目前正在使用新的导航组件,并坚持一个活动原则,我正在使用viewmodel在片段之间进行通信,目前我有一个将View模型绑定到片段的场景(不需要它与活动相关联,这些数据必须在这个碎片生命周期内消失)我必须调用
getParentFragment().getParentFragment().getParentFragment()
在我看来,这似乎是错误的,但是我已经对其进行了测试,并且似乎可以正常工作,例如,记录哈希码会给我
D/EnvTabFrag: this fragment 62204288
D/EnvTabFrag: parent fragment 264756153
D/EnvTempFrag: this fragment 169781400
D/EnvTempFrag: parent fragment 66865393
D/EnvTempFrag: parents parent fragment 62204288
D/EnvTempFrag: parents parents parent fragment 264756153
有人可以告诉我我在这里做的事情是否可怕,也许我看不到或理解,我唯一能看到的潜在问题是空指针,这是一个好的方法还是我正在做的事情失踪?非常感谢
示例片段
locationPickerViewModel = ViewModelProviders.of(getParentFragment().getParentFragment().getParentFragment())
.get(LocationPickerViewModel.class);