showwiki
showwiki
> > different DBs/Box for different modules ? > > This. Each module is completely separate from each other, so also has its own database files. Maybe the key is...
> Thanks. This is similar to multi-module support requested in #588. However, this talks about entities from dependencies. > Both are currently not possible due to technical restrictions (the annotation...
如楼主所说,我引入拷贝源码后 把 FragivityFragmentNavigator 中的130行改为 `val size = fragmentManager.mBackStack?.size ?: 0` 解决了。
在使用官方demo的时候,我把 LaunchModeFragment 中 binding.btnPoptohome.setOnClickListener { navigator.popTo(HomeFragment::class) } 中的 navigator.popTo(HomeFragment::class) 改为 navigator.popTo(HomeFragment::class, true) 再点击HomeFragment 中的任何按钮都崩溃,`java.lang.IllegalArgumentException: No destination with ID 0 is on the NavController's back stack. The current destination is null`
从popTo入手,观察了一下popBackStackInternal的实现,发现他是搞了一个for循环popStack,我在fragivity官方demo里面的LaunchModeFragment 中binding.btnPoptohome.setOnClickListener 中实验了如下反射代码,实验中我多点了几个标准的LaunchModeFragment 放在popStack中,目测是可以清掉后台backstack中所有fragment,除了root的HomeFragment,不过我自己都觉得太野蛮了些,一路反射,最后也需要loadroot才能加载想要的页面。 还是有些问题,等明天再研究一下loadroot的实现 ```kotlin val navController = navigator.navController val declaredField = androidx.navigation.NavController::class.java.getDeclaredField("mBackStack") val declaredField2 = androidx.navigation.NavController::class.java.getDeclaredField("mNavigatorProvider") declaredField2.isAccessible = true declaredField.isAccessible = true val mNavigatorProvider = declaredField2.get(navController) as NavigatorProvider...
完美,navigation 终于可以用了,看了一下改动的源码,很巧妙啊,kotlin的扩展方法原来这么牛掰,就是为写扩展库用的啊。我还傻乎乎的反射。
Utils 中如果this.java.name.hascode容易冲突的话,可以考虑this.java.canonicalName 这个 带完整包名的名字,应该不会有冲突
navigator.showDialog打开DialogFragment后, 关闭 是navigator.navigateUp,还是 navigator.pop(), 用navigator 这种方式打开后,以前用dialogfragment 实例实现的监听好像用不了吧。以前都是DialogFragment()一个实例instance,然后instance.setCustomeListener定义一些监听进行相关处理。navigator有相关的支持吗
发现一个bug , A->B->C. C pushTo 到A, 再返回 ,B 、 C都还在啊, 虽然从stack 弹窗显示,都不在,但点击返回键确能退回去,是不是graph里面的逻辑没有清掉
我参考了一下androidx.navigation.NavController#popBackStackInternal 中的方法,navigation自身的popTo 用的应该就是这个方法,他还是进行了一些细节处理, 在修改了一下Ext.kt 中的 internal fun NavController.clearBackStackEntry() 的方法如下,就可以了,但还是用到了反射。而且在多组件的情况下有时候会导致 一个问题,A->B->C ApushTo 到C ,会导致B的残像一直在,A要设置背景才能覆盖。 ```kotin @JvmSynthetic internal fun NavController.clearBackStackEntry() { val mNavigatorProviderField = androidx.navigation.NavController::class.java.getDeclaredField("mNavigatorProvider") val mViewModelField = androidx.navigation.NavController::class.java.getDeclaredField("mViewModel") mViewModelField.isAccessible = true...