android - 应用启动时预加载 fragment

标签 android android-fragments fragment navigation-drawer preload

我正在使用带有抽屉导航菜单的应用程序,我希望在应用程序启动时创建所有 fragment ,因为一些 fragment 从网络服务获取数据,我不希望用户拥有等待所有数据在进入屏幕时立即加载。要解决此问题,我想一次创建所有 fragment ,然后隐藏它们,然后再显示正确的 fragment 。

  private void initFragments() {
    FragmentManager fManager = getFragmentManager();
    FragmentTransaction fTransaction = fManager.beginTransaction();
    for (int i = 0; i < MAIN_FRAGMENTS; i++) {
        fTransaction.add(R.id.frame_container, fragmentArray[i], fragmentTags[i]);
    }
    fTransaction.commit();
    fManager.executePendingTransactions();
}
private void hideFragments(){
    FragmentManager fManager = getFragmentManager();
    FragmentTransaction fTransaction = fManager.beginTransaction();
    for (int i = 0; i < MAIN_FRAGMENTS; i++) {
        fTransaction.hide(fManager.findFragmentByTag(fragmentTags[i]));
    }
    fTransaction.commit();
    fManager.executePendingTransactions();
}

我解决这个问题的方法是创建所有 fragment ,然后通过调用隐藏它们

initFragments()
hideFragments()

但是,我注意到当我在模拟器上运行它时,在某些设备上它会正确地只显示一个 fragment ,其余的 fragment 被添加但隐藏了。但在其他一些设备上,它会显示所有 fragment 相互重叠,导致丑陋的困惑。此外,当我在平板电脑等横向设备上使用该应用程序时, fragment 也会相互重叠,因为我已将应用程序强制设置为仅纵向模式。关于解决此问题的最佳方法有什么想法吗?

最佳答案

你有任何错误吗?

我怀疑某些设备/版本可能不支持 findFragmentByTag() 方法或 hide() 方法。尝试调查一下。

关于您在平板电脑上的重叠问题,试试这个:https://stackoverflow.com/a/11086185/2929693

关于android - 应用启动时预加载 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30239637/

相关文章:

android - 从由 toArray() 转换的 mongodb 查询中获取字段值

android - Facebook Android API 和 Twitter Webview 登录集成

java - 如果您在动画进行时单击,Android fragment 事务动画会崩溃

android - 从其他 fragment 更改 fragment ,如导航链接

Android SeekBar setOnSeekBarChangeListener

java - 如何在用户点击的 TextView 上显示数字?

android - 坐标布局下工具栏重叠activity

android - 在服务中调用 PhoneStateListener 时出现 NullPointerExecption

android - TextView 链接在我的模拟器 fragment 中不起作用

java - 使用应用程序图标作为向上按钮从 ActionBarActivity 返回 Fragment?