Android ViewPager : Update off-screen but cached fragments in ViewPager

标签 android caching android-fragments android-viewpager

我有一个 ViewPager,其中包含多个 TextView,它们具有不同的字体大小。 此外,我还获得了增加/减少字体大小的按钮,通过添加其默认大小加上一个名为 STEP 的值(该值通过 inc/dec 字体大小按钮进行更改)来计算每个 textView 的字体大小。
我的问题是,如果在应用大小更改后第一次显示 View ,它将在 onCreateView() 期间创建所需大小的 textView,但是如果 fragment 已经缓存并且 onCreateView 不再被调用,我不知道如何更新它们的 textView考虑到只有一个缓存 fragment 显示在屏幕上(我可以毫无问题地更新它),但其他 fragment 不会显示(我不知道它们是否附加到 Activity ,在这种情况下)。
换句话说,我如何检测 ViewPager 缓存了哪些 fragment 以及它们的 onCreateView 已被调用(这些是必须应用更新到其 View 的 fragment )。我在下图中用浅绿色和问号标记了它们:enter image description here

最佳答案

接受的答案很好,但您不应该缓存所有项目。相反,您可以使用此方法:

mViewPager.setOffscreenPageLimit(int);

例如,有很多带有图像和动画的项目。如果您缓存所有这些,这可能会导致 OutOfMemoryError 。为了防止这种情况,您可以定义要缓存的页面限制。

编辑:改为HashMap<Integer, Object> ,最好使用 SparseArray<Object> .

关于Android ViewPager : Update off-screen but cached fragments in ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23133912/

相关文章:

android - fragment 上的 ListView

android - 如何在具有三个平移布局的嵌套 fragment 中添加动态 fragment

android - 如何使用 Android XML 定义在末尾定义一个带圆圈的矩形

android - 具有自定义项的 ListView

android - Android 和 iPhone 之间的 Xamarin 可移植性

wpf - 如何从System.Windows.Media.MediaPlayer资源获取音乐?在WPF应用程序中,在线音乐播放器?

android - 如何在具有多个 TextView 的相对布局中保持 TextView 居中对齐

php - 使用 php 隐藏一个 Div

php - ob_start 缓存 CSS

java - Android Activity ClassNotFoundException - 尝试了一切