如何检查片段是否对用户可见
How to check if the fragment is visible to user
如何检查 Android 应用中的片段是否对用户可见?
我有一个应用程序,其中 主页 activity
有几个 fragments
。其中一个片段监听另一个 activity 从 Home 开始的事件,因此每次我从 Home 回到 Home 时执行一个方法activity。虽然我想要的是仅触发这些事件并执行方法 如果该片段在前台对用户可见。
我尝试了以下方法,但似乎没有任何效果:
isAdded()
和 isVisible()
检查 - 总是 return true
一旦创建片段,无论片段是否对用户实际可见。
getUserVisibleHint()
- 这又会 return true
即使我还在另一个 activity。此外,它也已被弃用,因此即使它有效,我也想寻找其他解决方案。
我已经走到了死胡同,无法找到一种实际的工作方法来检查片段是否对用户实际可见,而不仅仅是添加到内存中。
如有任何帮助,我们将不胜感激!
我终于在自己尝试的过程中找到了解决方案:
简单检查 isResumed()
,如果片段处于前台和恢复状态,它只会 return 为真。
为了安全起见,检查 isVisible
也会在内部检查 isAdded
并减少条件,所以一个简单的 if-condition
:
if (isVisible() && isResumed()) {
// perform your action here
}
这对我有用!
如何检查 Android 应用中的片段是否对用户可见?
我有一个应用程序,其中 主页 activity
有几个 fragments
。其中一个片段监听另一个 activity 从 Home 开始的事件,因此每次我从 Home 回到 Home 时执行一个方法activity。虽然我想要的是仅触发这些事件并执行方法 如果该片段在前台对用户可见。
我尝试了以下方法,但似乎没有任何效果:
isAdded()
和isVisible()
检查 - 总是 returntrue
一旦创建片段,无论片段是否对用户实际可见。getUserVisibleHint()
- 这又会 returntrue
即使我还在另一个 activity。此外,它也已被弃用,因此即使它有效,我也想寻找其他解决方案。
我已经走到了死胡同,无法找到一种实际的工作方法来检查片段是否对用户实际可见,而不仅仅是添加到内存中。
如有任何帮助,我们将不胜感激!
我终于在自己尝试的过程中找到了解决方案:
简单检查 isResumed()
,如果片段处于前台和恢复状态,它只会 return 为真。
为了安全起见,检查 isVisible
也会在内部检查 isAdded
并减少条件,所以一个简单的 if-condition
:
if (isVisible() && isResumed()) {
// perform your action here
}
这对我有用!