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

当升级为 navigation-fragment-ktx:2.4.0 和 androidx.navigation:navigation-ui-ktx:2.4.0 时跳转报错 #63

Open
Jooyer opened this issue Feb 13, 2022 · 2 comments

Comments

@Jooyer
Copy link

Jooyer commented Feb 13, 2022

大佬:
你好, 如标题所示,当升级到 2.4.0时跳转会报如下错误:
java.lang.NoSuchMethodError: No virtual method moveToState(Landroidx/fragment/app/Fragment;I)V in class Landroidx/fragment/app/FragmentManager; or its super classes (declaration of 'androidx.fragment.app.FragmentManager' appears in /data/app/com.xxx.xxx.xxx-J5OaT2ltiNeEvbQmx-JqVg==/base.apk)
at androidx.fragment.app.FragivityFragmentNavigator.init$lambda-0(FragivityFragmentNavigator.kt:40)
at androidx.fragment.app.FragivityFragmentNavigator.$r8$lambda$lP8qpNsgnLRTRz8pL1NGjhIp6Ww(Unknown Source:0)
at androidx.fragment.app.FragivityFragmentNavigator$$ExternalSyntheticLambda0.onBackStackChanged(Unknown Source:2)
at androidx.fragment.app.FragmentManager.reportBackStackChanged(FragmentManager.java:2030)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1865)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1764)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1701)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:488)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)

我的跳转代码如下:
navigator.push(JuniorGeometryStudyFragment::class){
applySlideInOut()
}

我测试了多次,错误信息只能如上, 请大佬看看具体是什么原因造成的. 我的QQ: 712952521
PS: 我使用 com.github.vitaviva.fragivity:core:0.3.1 , navigation-fragment2个库 2.3.5, 则表现是正常的

@showwiki
Copy link

showwiki commented Feb 21, 2022

看了一下,是因为 2.4.0 google 更新了NavController 中的一些方法和成员变量的获取方式 ,好几个原来库中用的方法,已经不适用了,NavController中的mBackStack都变成了backQueue,初步看来一下,进行一下如下改动应该能跑起来,但不知道有没有啥坑

 // FragivityFragmentNavigator 的40行
   fragmentManager.moveToState(Fragment.ACTIVITY_CREATED, false)

// androidx/navigation/Ext.kt  中的mBackStack 改为 backQueue

// com/github/fragivity/CreateNode.kt 中的 25行 改为 
setClassName(clazz.java.name)

// 47行改为 graph.nodes

感觉两位大佬最近太忙了。不过说实话,这是我发现的适配navigation 思路最好的库,不用这个的话, 单activity 组件化还是挺麻烦的,还是希望他们能继续维护 @vitaviva @qdsfdhvh

@Jooyer
Copy link
Author

Jooyer commented Feb 25, 2022

@showwiki 十分感谢, 我暂时还是使用2.3.5的版本,因为我使用的是依赖方式而非源码, 再次感谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants