fragment 为什么没有被销毁
时间: 2024-05-17 11:14:49 浏览: 11
我不清楚你在什么上下文中提到 "fragment 没有被销毁"。但是一般情况下,一个 Fragment 会在以下情况下被销毁:
1. 当它所依附的 Activity 被销毁时,它也会被销毁。
2. 当 Fragment 的事务被提交,并且在这个事务中调用了 remove() 方法时,它会被销毁。
3. 在 Fragment 中调用了自身的 onDestroy() 方法时,它会被销毁。
如果你能提供更具体的上下文信息,我可以更好地回答你的问题。
相关问题
我从B fragment 返回到 A fragment, 但是B fragment 并没有被销毁
这可能是因为在返回到 A fragment 时,你使用了 addToBackStack() 方法将 B fragment 添加到了返回栈中,这样返回到 A fragment 时,B fragment 并不会被销毁,而是被保存在返回栈中,以便下次再返回到 B fragment 时可以直接恢复它的状态。如果你不想让 B fragment 被保存在返回栈中,可以在返回时使用 remove() 方法将其从 Activity 中彻底移除。
ViewPager里的fragment什么什么时候会被实例化
在 ViewPager 中,通常有两种方式实例化 Fragment:
1. 通过 FragmentPagerAdapter 或 FragmentStatePagerAdapter,在实现 getItem 方法时创建 Fragment 实例并返回,这样 ViewPager 会在切换页面时显示对应的 Fragment。
2. 通过 FragmentTransaction 在代码中动态添加 Fragment,这时 Fragment 只有在被添加到 ViewPager 中时才会被实例化。
对于第一种方式,FragmentPagerAdapter 会在 ViewPager 初始化的时候预先创建一定数目的 Fragment,并缓存起来,这些 Fragment 可能不会立即被显示。而 FragmentStatePagerAdapter 则只保留当前显示的 Fragment 和左右各一个,其他 Fragment 会被销毁,这样可以节省内存开销。
对于第二种方式,Fragment 只有在被添加到 ViewPager 中时才会被实例化,这时可以通过 FragmentTransaction 的 add 方法或 replace 方法来添加 Fragment。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)