我的 ViewPager 中有 3 个片段。在我的片段中,我添加了静态切换按钮。(静态,因为我没有找到 nullpointerexception 的解决方法,如果我想在自定义方法中的 Fragment 类中使用 findViewById() 而不是 onCreateView() )
在我的 MainActivity 的 ViewPager 之外,我有一个重置按钮,它应该将所有 ToggleButtons(在所有 3 个片段上)重置为“未选中”。
每次我单击重置按钮时,只有当前页面和每个相邻页面都会更新。
例如
- 当前页面:0 更新页面:0,1
- 当前页面:1 更新页面:0,1,2
- 当前页面:2 更新页面:1,2
我认为问题是 FragmentPagerAdapter。文档说:
PagerAdapter 的实现,它将每个页面表示为一个 Fragment,只要用户可以返回该页面,它就会永久保存在 Fragment 管理器中。
当我在第 2 页时,我无法直接返回到第 0 页,所以我认为第 0 页(= Fragment 0)的视图不再在内存中了?! 那么如何访问目前不可见的 Fragment 中的 ToggleButtons ,也不是当前 Fragment 的邻居?有什么解决方法吗?
编辑:
我发现,实际上我的 ToggleButtons(在所有 Fragments 上)的所有 checked()-values 都会更新,但不是 Fragments 的膨胀视图,它们不可见,也不是相邻的 Fragments。因此,当我返回到之前的片段时,ToggleButtons 的已检查()值将重置为片段上次可见时的状态。奇怪的...
例子:
- Page2 活动 - ToggleButton_Page2.checked() = true
- 切换到第 0 页
- 按重置按钮。Toast ToggleButton_Page2.checked() = false
- 切换回第 2 页(或已在第 1 页)
- ToggleButton_Page2.checked() = true //应该是 false