首页 > 解决方案 > 如何检查片段是否对用户可见

问题描述

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

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

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

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

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

对此的任何帮助表示赞赏!

标签: androidfragment

解决方案


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

简单检查,isResumed()如果片段处于前台和恢复状态,它只会返回 true。

为了安全起见,检查isVisiblewhich 还会在isAdded内部检查并减少条件,所以很简单if-condition

if (isVisible() && isResumed()) {
    // perform your action here
}

这对我有用!


推荐阅读