通过错误的片段接收对 onKey 方法的调用



情况 ************: 我正在按片段查看有关 onKey 覆盖方法的一些情报。 我有单一活动几个片段结构。一次只有一个片段可见。 我显示了一个带有事务添加片段的新片段(因为我不想在返回时重新创建以前的片段,所以我不使用替换)+ setPrimaryFragment 每次用于顶部碎片。 我返回事务删除片段 + setPrimaryFragment 以使用顶部片段进行更新。 在我的片段上,我覆盖了 onKey 方法。

现在我的问题************* 有时,onKey(后退按钮)不会被顶部片段(可见和主)接收,而是由不可见且非主片段接收。

情况 1:有 2 个碎片,打开和返回,工作正常。

有 3 个片段,打开 FR1,打开 FR2,打开 FR3 并返回 FR2(移除并销毁 FR3)。所以现在如果我再次推回去,onKey 不是调用第二个 fragement fr2(可见和主要),而是通过第一个片段 fr1(不可见且不是主要)调用。

有人可以告诉我为什么吗?onKey 如何决定调用哪个片段?

现在,我通过在 onKey 内部检查 fragement 是否是主要的来解决这个问题,如果不是,我会将调用调度到主节点。但我仍然想知道为什么...

谢谢。

不确定回答我的请求是否有用,但我最终找到了这种行为。即使片段是顶部可见的片段,也不意味着它具有焦点。 只有具有焦点的片段才能触发Key方法。弹出或替换不会转移焦点,您需要使用方法请求焦点自己完成。

最新更新