我对FragmentManager回退栈背后的基本原理有些困惑。
给定一个activity有两个容器来放置不同的碎片:问题是,当使用fragment transaction向两个容器添加碎片时,无论使用哪个容器,回退栈的计数都会增加。
这对我来说真的没有意义。如果这不是Android中推广的做法,那么我们如何在同一个activity中独立地管理2个回退栈(每个activity只有一个FragmentManager)?
我可能只是错过了一些显而易见的东西。
我对FragmentManager回退栈背后的基本原理有些困惑。
给定一个activity有两个容器来放置不同的碎片:问题是,当使用fragment transaction向两个容器添加碎片时,无论使用哪个容器,回退栈的计数都会增加。
这对我来说真的没有意义。如果这不是Android中推广的做法,那么我们如何在同一个activity中独立地管理2个回退栈(每个activity只有一个FragmentManager)?
我可能只是错过了一些显而易见的东西。
片段是附加到活动的模块,不应该知道彼此的片段,并且通信应通过活动进行。
片段由 FragmentManager 管理,由活动提供,每个 操作(例如添加、删除或替换片段)都通过 FragmentTransaction 提供,每个活动只有一个可用的后退堆栈。因此,正如 @hackbod 在这篇文章中所说的那样:
您只需要实现自己的单独后退堆栈,或者可以使用 FragmentTransaction.detach 进行管理。