接收到错误片段对onKey方法的调用。

问题描述 投票:0回答:1

我每次都用事务添加fragment(因为我不想在回来的时候重新创建以前的fragment,所以我不使用replace)+setPrimaryFragment来显示一个新的fragment,我用事务删除fragment+setPrimaryFragment来更新顶部的fragment。

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

有3个碎片,打开fr1,打开fr2,打开fr3,再回到fr2(删除并销毁fr3)。所以现在如果我再次推回,onKey不是在第二个fr2(可见的和主要的),而是在第一个fr1(不可见的和不主要的)。

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

目前,我通过在onKey里面检查fragment是否是primary来解决这个问题,如果不是,我就自己调度调用primary。但我还是想知道为什么......。

谢谢。

android fragment keyevent
1个回答
0
投票

不知道回答我的请求是否有用,但我终于找到了这种行为的来源。即使该片段是最上面可见的片段,也不意味着它有焦点。只有有焦点的片段才有onKey方法被触发。弹出或替换并不能转移焦点,你需要自己用请求焦点的方法来做。

© www.soinside.com 2019 - 2024. All rights reserved.