We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FragmentationMagician.getActiveList()返回的list应当是fragment入栈顺序,很多feature依赖这个顺序。 其来源是FragmentManagerImpl.mActive,然而它在androidx中是hashmap,是无序的,并非入栈顺序。
The text was updated successfully, but these errors were encountered:
哈哈哈,我也遇到了这个问题,暴力解决方法是把方法改成了只从mAdd获取,就是不知道会有什么问题
Sorry, something went wrong.
作者在support library 版本中,特意根据不同的sdk版本,来保证获取到的fragment列表是mActive。从mActive获取fragment列表也是更严谨的做法。
在androidx中,1.0.0的fragment版本,mActive 是SparseArray,官方也有List getActiveFragments()函数,自己处理一下值为null的情况,顺序也是正确的。
在1.1.0 alpha02 中mActive是一个hashmap,而且它的key是随机的,也就是说转为list ,顺序是错误的
mAdd是mActive的子集,作者最后的版本1.0.3 是在mAdd中获得fragment列表,应该也没有什么问题
通俗一点讲,mActive中比mAdd多了一些,已经不需要的fragment的实例,这些实例是因为系统配置发生变化(例如:屏幕旋转)(可参考这篇文章Android - retaining fragment?),这些实例会在必要的时候显示出来,一旦显示那么mAdd中也就有了该实例。
mAdd 和 mActive 的不同之处可以看这里 difference between mAdded & mActive in source code of support.FragmentManager
以下结论是我的预测,还没有大量测试: 因为我们在代码中,对fragment所进行的操作后,预期的fragment列表和mAdd的列表是一样的,那么在对fragment列表操作的时候,也是正确的。
另外,在我维护的版本中,我解决了一些其他的问题,欢迎大家提供宝贵建议 #1237
No branches or pull requests
FragmentationMagician.getActiveList()返回的list应当是fragment入栈顺序,很多feature依赖这个顺序。
其来源是FragmentManagerImpl.mActive,然而它在androidx中是hashmap,是无序的,并非入栈顺序。
The text was updated successfully, but these errors were encountered: