我正在使用android导航组件,尽管存在一些早期的问题,但现在运行良好。
我将许多片段的设计原则保持不变,并且使用共享的视图模型在片段之间进行通信。
我现在在我的应用程序中有一个场景,其中用户创建了一些东西,将其保存并返回到主列表片段(想像添加新联系人之类的东西,除了它涉及的内容远不止在某些框中键入内容)< / p>
当用户保存信息时,我需要从视图模型中清除数据(这是由于安全性而不是性能),因为它们是共享的视图模型,因此与活动生命周期(而不是片段)相关联,因此他们不会清除自己,我可以通过正常的流程来实现这一点,只需将数据设置为null并调用navcontroller.popBackStack(),但是如果用户按下自己的按钮,我将无法知道,因此无法清除这些视图模型,任何想法?
答案 0 :(得分:1)
您可以实现一个侦听器界面(例如OnBackPressedListener),并在各自的片段中使用它,以便在按下后退按钮(或向上导航)时采取措施。该界面将成为您的片段和活动之间的桥梁。
答案 1 :(得分:1)
我认为当时尚不存在正确的方法,但是您应该将视图模型的范围限定在导航图上,这样系统会清除数据,而您只能处理导航,快速示例:
fn main() {
let test_num = SomeNum { num: 16 };
let oveloadedNum = test_num > 10; // works
let arc_num = Arc::new(test_num);
let overloadedArc = *arc_num > 10;
let arc_num_clone = Arc::clone(&arc_num);
let overloadedArcClone = *arc_num_clone > 10;
}