我正在使用Android导航组件,尽管在刚开始的时候有一些问题,但它现在运行良好。
我坚持一个活动,许多片段设计原则,我使用共享视图模型在片段之间进行通信。
我现在在我的应用程序中有一个场景,用户创建一些东西,保存它,并返回到主列表片段(想想像添加一个新联系人,除了它涉及的不仅仅是在一些框中输入)
当用户保存信息时,我需要从视图模型中清除数据(这是由于安全问题而不是性能),因为它们是共享视图模型,因此与活动生命周期而不是片段相关,因此它们不会自行清除,我可以在正常流中实现这一点,只需将数据设置为null并调用navcontroller。popBackStack(),但如果用户自己按下,我无法知道,因此无法清除这些视图模型,有什么想法吗?
我认为当时没有正确的方法,但您应该将视图模型的范围限定在导航图上,这样系统就会清除数据,您只需要处理导航,快速示例:
private ViewModelStoreOwner getStoreOwner() {
NavController navController = Navigation
.findNavController(requireActivity(), R.id.root_navigator_fragment);
return navController.getViewModelStoreOwner(R.id.root_navigator);
}
private void setUpSearchViewModel() {
searchViewModel = new ViewModelProvider(getStoreOwner()).get(SearchViewModel.class);
}
您可以实现一个监听器界面(比如OnBackPressedListener),并在您各自的片段中使用它来在按下后退按钮(或向上导航)时采取行动。该界面将是您的片段和活动之间的桥梁。
我有两个动作 但是我想知道如何使片段在退出时执行slide_out_left动画,并将其弹出堆栈。
我正在一个新的Android应用程序上使用导航组件,但我不知道怎么做 首先,我有我的主活动,我有main_navigation_graph 主要活动 NavHostFragment main_navigation_graph里面有3个碎片 这里一切都很好。问题是当我到达最后一个片段时,因为在这个片段上,我想根据BottomNavigationView输入(暂时)显示一些子片段(在新的NavHost
我想根据条件更改我的开始导航片段。我的起始片段可以是片段1或片段2。有没有办法实现它?
我正在使用NavController:。一切都很好,直到我旋转我的设备,然后我无法和。 在日志中:FragmentNavigator:忽略popBackStack()调用:FragmentManager已保存其状态,而FragmentNavigator:忽略导航()调用:FragmentManager已保存其状态 当我看到谷歌的样本,他们没有任何关于这个问题,有所有的工作良好。所以我不明白这就是问
我正在将我的应用程序更新为导航架构组件,我发现它在替换导航抽屉中可见的片段时存在延迟,无法顺利关闭。 直到现在,我一直在遵循这种方法: https://vikrammnit.wordpress.com/2016/03/28/facing-navigation-drawer-item-onclick-lag/ 所以我在中导航而不是在中导航以避免故障。 这是一个非常常见的问题,但它又回来了。使用导航组
我想做的是 我正在使用Android导航组件来处理我的应用程序中的导航。在这个例子中,我有两个屏幕,屏幕A和屏幕B。我希望用户能够单击屏幕A中的按钮,并能够导航到屏幕B;然后被阻止回到前一个屏幕(屏幕A)。 问题所在 null MainActivity--它充当我的单个活动navhost。