我有一个应用程序,其中主页 activity有多个fragments. 其中一个片段监听从Home启动的另一个活动的事件,因此每次我从该活动返回Home时都会执行一个方法。虽然我想要的是仅在片段对前台用户可见时触发这些事件并执行该方法。
我尝试过以下方法,但似乎没有任何效果:
isAdded()并isVisible()检查 - 总是true在创建片段后立即返回,无论片段是否对用户实际可见。getUserVisibleHint()true-即使我仍在其他活动中,这也会再次出现。此外,它也已被弃用,因此即使它有效,我也想寻找其他解决方案。我已经走进了一个死胡同,寻找一种实际的工作方法来检查片段是否实际上对用户可见,而不仅仅是添加到内存中。
对此有任何帮助,我们将不胜感激!
我在自己尝试时终于找到了解决方案:
简单检查isResumed(),只有当片段处于前台且已恢复状态时,它才会返回 true。
为了安全起见,检查isVisible它也会检查isAdded内部并会减少条件,所以一个简单的if-condition:
if (isVisible() && isResumed()) {
// perform your action here
}
Run Code Online (Sandbox Code Playgroud)
这对我有用!
| 归档时间: |
|
| 查看次数: |
2917 次 |
| 最近记录: |