2019-07-08 片段事务中getFragmentManager()和getChildFragmentManger()的区别:

在android开发中,我们常常会在片段中使用片段事务来管理父片段中的子片段。

想要在一个片段中使用片段事务应该注意到:片段没有一个名为getSupportFragmentManager()的方法,所以我们要想在片段中创建片段事务,需要得到一个片段管理器的引用。为此片段提供了两个方法:getFragmentManager()和getChildFragmentManager()。

我们主要内容就是明确两个方法的区别,以此来判断我们自己的应用中要使用哪种方法。

一、getFragmentManager()方法:

getFragmentManager()方法会得到与片段父活动相关联的片段管理器。使用这个片段管理器创建的所有片段事务会分别作为一个单独的事务增加到后退堆栈。使用这个方法会产生一个问题,就是用户在点击后退按钮时,他们可能希望屏幕回到选择训练项目之前的状态。但是后退按钮只是弹出后退堆栈中最后一个单独的事务。这样会使得用户想要的结果不符合事实。

二、getChildFragmentManager()方法:

getChildFragmentManager()方法则是会得到与片段的父片段关联的片段管理器。使用这个片段管理器创建的所有片段事务都会增加到父片段事务的后退堆栈,而不是增加为一个单独的事务。在用户单击后退按钮时,行为会有所不同。由于这两个事务时潜逃的,所以用户按下后退按钮时两个事务都会从后退堆栈弹出。这一次用户只需要按一次后退按钮就能取消一个即使嵌套了很多子事务的父片段事务。

你可能感兴趣的:(2019-07-08 片段事务中getFragmentManager()和getChildFragmentManger()的区别:)