FragmentTransation中的remove和detach有什么区别?

时间:2024-07-23 21:33:08

remove():

从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁;

detach():

会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

remove和detach有一点细微的区别,在不考虑回退栈的情况下,remove会销毁整个Fragment实例,而detach则只是销毁其视图结构,实例并不会被销毁。那么二者怎么取舍使用呢?如果你的当前Activity一直存在,那么在不希望保留用户操作的时候,你可以优先使用detach。