何时使 Fragment 失效
When to invalidate Fragment
我的 activity 使用 FragmentPagerAdapter
从 FragmentPagerAdapter.getItem()
方法创建我的 Fragment
的新实例。
每当我 select 包含我感兴趣的片段的页面时,我想更新它的视图,因为在此页面不在屏幕上时它们可能已经失效。
正确的 moment/method 是什么?我已经尝试了一些事情:
- MyFragment.onCreateView: 这只是第一次调用
- PagerAdapter.onPageSelected:由于
PagerAdapter
一直在创建新实例,因此在 onCreateView
中使用 findViewById
获得的对 Views
的字段引用不可用(除非我猜他们是静态成员)。
- 其他生命周期事件包括
onResume
、onAttach
我发现,如果我将 Activity
引用传递给 onPageSelected
事件中的 Fragment
,并在其上使用 findViewById
以获得对我的视图的新引用它有效,但我无法想象没有更适合的方法来做到这一点。
OverRide this method,setUserVisibleHint
向系统设置关于此片段的 UI 当前是否对用户可见的提示。此提示默认为 true 并且在片段实例状态保存和恢复中持久存在。只要它为真,就意味着片段正在被查看,无论是从视图寻呼机还是触发其视图验证的东西。
应用程序可以将此设置为 false,以指示片段的 UI 已滚动到可见范围之外或用户无法直接看到。
我的 activity 使用 FragmentPagerAdapter
从 FragmentPagerAdapter.getItem()
方法创建我的 Fragment
的新实例。
每当我 select 包含我感兴趣的片段的页面时,我想更新它的视图,因为在此页面不在屏幕上时它们可能已经失效。
正确的 moment/method 是什么?我已经尝试了一些事情:
- MyFragment.onCreateView: 这只是第一次调用
- PagerAdapter.onPageSelected:由于
PagerAdapter
一直在创建新实例,因此在onCreateView
中使用findViewById
获得的对Views
的字段引用不可用(除非我猜他们是静态成员)。 - 其他生命周期事件包括
onResume
、onAttach
我发现,如果我将 Activity
引用传递给 onPageSelected
事件中的 Fragment
,并在其上使用 findViewById
以获得对我的视图的新引用它有效,但我无法想象没有更适合的方法来做到这一点。
OverRide this method,setUserVisibleHint
向系统设置关于此片段的 UI 当前是否对用户可见的提示。此提示默认为 true 并且在片段实例状态保存和恢复中持久存在。只要它为真,就意味着片段正在被查看,无论是从视图寻呼机还是触发其视图验证的东西。
应用程序可以将此设置为 false,以指示片段的 UI 已滚动到可见范围之外或用户无法直接看到。