Skip to content
New issue

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

关于单Activity,从loadRoot中跳转其他页面时设置属性popSelf = true的问题 #45

Open
SunnyGege66 opened this issue Jul 5, 2021 · 2 comments
Labels
enhancement New feature or request

Comments

@SunnyGege66
Copy link

SunnyGege66 commented Jul 5, 2021

作者您好,当项目中只有一个Activity,初始化加载loadRoot为登录页LoginFragment,当我登录后要跳转HomeFragment时使用方法navigator.push(HomeFragment::class) {
popSelf = true
applySlideInOut()
}
需要把原来的LoginFragment弹出并跳转到HomeFragment,需求是此时栈内只有HomeFragment即可
但是当我像上面那样做的时候跳转报错:java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference 并异常退出应用。定位源码在FragivityFragmentNavigator -> navigate方法 ->代码片段:
else if (isSingleTopReplacement || isPopSelf) {
if (prevFragment != null) {
ft.remove(prevFragment)
fragment.mTag = generateBackStackName(backStack.size - 1, destId)
val size = fragmentManager.mBackStack.size
if (size > 0) {
fragmentManager.mBackStack[size - 1].mOps
.filter { it.mCmd == OP_ADD && it.mFragment == prevFragment }
.forEach { it.mFragment = fragment }
}
}
isAdded = false
}
里的 fragmentManager.mBackStack为空,在获取size前我加上fragmentManager.mBackStack!=null判断没报错了,这算Bug吗?
或者源码里有解决方案一开始就能弹出loadRoot初始化页面并跳转其他页面的正确解决方案吗?

qdsfdhvh added a commit that referenced this issue Jul 5, 2021
@qdsfdhvh
Copy link
Collaborator

qdsfdhvh commented Jul 6, 2021

之前的navigation算是 天克 替换栈顶fragment这种行为,昨天本来想先修复crash,再基于新beta版的多返回栈适配的,结果被现实教育了;
需要后续慢慢完善了。

@qdsfdhvh qdsfdhvh added the enhancement New feature or request label Jul 6, 2021
@showwiki
Copy link

如楼主所说,我引入拷贝源码后 把 FragivityFragmentNavigator 中的130行改为
val size = fragmentManager.mBackStack?.size ?: 0 解决了。

qdsfdhvh pushed a commit that referenced this issue Jul 20, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants