java - viewpager 中的 Android 应用程序 fragment 无缘无故分离

标签 java android android-fragments android-viewpager

我正在编写一个 Android 应用程序,它使用 ViewPager 来包含 3 个可以通过左右滑动来访问的屏幕。这些选项卡被定义为具有单独 XML 文件的 fragment 子类。它有效,但由于某种原因,每当我拔下我的设备或连接/断开蓝牙输入设备(可能是其他东西,但这些是我见过的主要原因)时, fragment 就会分离,屏幕变白,然后应用程序崩溃出现此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{me.samboycoding.<snip>/me.samboycoding.<snip>.MainActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f08006d (me.samboycoding.<snip>:id/pager) for fragment TabDeviceOverview{d0b5892 #0 id=0x7f08006d android:switcher:2131230829:0}

我不知道为什么会这样。我试过将 setRetainInstance 设置为 true,我也试过使用 fragment 管理器来存储我的 fragment ,但无济于事。首先,是否没有办法确保 fragment 保持加载状态 - 我认为这就是这里发生的情况,其次,如果没有,我该如何检测这种状态并重新创建 View ?

如果需要,我可以发布代码,只要告诉我发布什么即可。

适配器类:https://hastebin.com/zayewipimo.java

我的 onCreate 的相关部分:https://hastebin.com/gubikixude.java

最佳答案

1) 删除这一行:

pager.setOffscreenPageLimit(2);

它会导致 fragment 保留它的 View 而不是重新创建它的 View 。

2) 更改您的适配器类:

扩展 FragmentStatePagerAdapter

PageAdapter extends FragmentStatePagerAdapter

3) 覆盖适配器类中的 getItemPosition() 并使其返回 POSITION_NONE

  @Override
    public int getItemPosition(Object object) {

        return POSITION_NONE;
    }

关于java - viewpager 中的 Android 应用程序 fragment 无缘无故分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110083/

相关文章:

javascript - Ogg文件无法在手机上多次播放

java - Android 应用程序因 java.lang.StackOverflowError 而失败

android - 在 fragment 中设置微调器

java - 阻止 Android 通知栏出现在触摸事件上

java - 在 Android 中将字符串转换为 Java 源代码

java - 为什么 ListView 需要将其容器项放在单独的布局文件中

java - JapserReport 中的覆盖页码未反射(reflect)在最终 PDF 中

使用 intel xdk 为 socket.io 构建 Android

java - 主 Activity 重新加载时没有动画

java - Android - 处理来自 Activity 的 fragment onClick