fragivity icon indicating copy to clipboard operation
fragivity copied to clipboard

没有Activity下的push

Open Key-CN opened this issue 3 years ago • 5 comments

使用场景比如:带底部导航的模式,下面四个button切换上面的fragment,目前我找了一圈,只看到Ext.kt中有:

val Fragment.navigator
val View.navigator

应该再来一个Activity.navigator

Key-CN avatar Jan 26 '21 10:01 Key-CN

我尝试去增加一个Activity下的putFragment,感觉思路好像不对,四个页面同级,可以任意切换,而且不应该存在回退栈。 你觉得应该怎么处理呢?

Key-CN avatar Jan 26 '21 11:01 Key-CN

  1. 如你所说,如果是ViewPager个页面之间的切换,感觉不需要回退栈管理的话,所以不需要push
  2. 如果是希望在子Fragment中为父级的Stack压栈,可以调用parentFragment.push(...)
  3. 考虑Activity只提供容器,不应该有逻辑,所以就没设计任何扩展方法

vitaviva avatar Jan 26 '21 16:01 vitaviva

你说都前两点我觉得都没有问题,第三点不一定,这完全取决于产品的设计逻辑,因为我看你的初衷应该也是想把这个库打造成一个比较通用的库。 我关注到这个库也是因为一直以来使用navigation的痛点,所以经常搜索关注这方面的内容。我自己使用时重写了生命周期,分成一次性渲染和每次onStart都需要渲染两部分。(尤其赞同你replace替换成add)。当看到你这个库的时候,发现你已经做了大部分我想做的功能。瞬间觉得为自己剩下了很多力气。

关于第三点,我提供一种我目前做的产品的UI,就是Activity不仅仅是容器还包含了很多逻辑。我想类似于这种设计的app也不在少数。 image

另外还有一个思考,比如这种4个viewpager,是否也可以直接使用4个栈来管理呢?这样在任何下级页面切换时,都能保留另一个导航内都路径。或者说这样就可以只用一个Fragment容器,而不需要子容器了

Key-CN avatar Jan 27 '21 03:01 Key-CN

像这种UI使用一个容器,四个首页就用navigation的global标签(navigation顶层的action)跳转似乎也可以,我看loadRoot生成的destination应该就属于这种不带上级fragment指定路径的action吧

Key-CN avatar Jan 27 '21 03:01 Key-CN

另外还有一个思考,比如这种4个viewpager,是否也可以直接使用4个栈来管理呢?这样在任何下级页面切换时,都能保留另一个导航内都路径

这个我觉得是靠谱的

看你的产品UI,4个标签卡的切换逻辑是否可以放到HomeFragment,这要就不需要Activity了

vitaviva avatar Jan 28 '21 10:01 vitaviva