如何检查片段是否对用户可见

Yas*_*shi 2 android fragment

如何检查 Android 应用程序中的片段对用户是否可见?

我有一个应用程序,其中主页 activity有多个fragments. 其中一个片段监听从Home启动的另一个活动的事件,因此每次我从该活动返回Home时都会执行一个方法。虽然我想要的是仅在片段对前台用户可见时触发这些事件并执行该方法。

我尝试过以下方法,但似乎没有任何效果:

  1. isAdded()isVisible()检查 - 总是true在创建片段后立即返回,无论片段是否对用户实际可见。
  2. getUserVisibleHint()true-即使我仍在其他活动中,这也会再次出现。此外,它也已被弃用,因此即使它有效,我也想寻找其他解决方案。

我已经走进了一个死胡同,寻找一种实际的工作方法来检查片段是否实际上对用户可见,而不仅仅是添加到内存中。

对此有任何帮助,我们将不胜感激!

Yas*_*shi 5

我在自己尝试时终于找到了解决方案:

简单检查isResumed(),只有当片段处于​​前台且已恢复状态时,它才会返回 true。

为了安全起见,检查isVisible它也会检查isAdded内部并会减少条件,所以一个简单的if-condition

if (isVisible() && isResumed()) {
    // perform your action here
}
Run Code Online (Sandbox Code Playgroud)

这对我有用!

  • 1. 如果另一个片段或对话框片段位于其上方,则前一个片段不会向“isResumed”返回 true,直到对话框关闭且该片段到达前台为止。2. 我的用例是从其他活动返回到此片段,而不是任何其他情况(例如对话框或其他内容),对于这些情况,恢复状态似乎对我有用。 (2认同)