viewpager 中的 Android 应用程序片段会无缘无故地分离



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

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,我也尝试使用片段管理器来存储我的片段,但无济于事。首先,是否有办法确保片段保持加载 - 因为我认为这就是这里发生的事情,其次,如果没有,我该如何检测这种状态并重新创建视图?

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

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

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

1) 删除此行:

pager.setOffscreenPageLimit(2);

这将导致片段保留其视图,而不是重新创建其视图。

2) 适配器类的变化:

扩展FragmentStatePagerAdapter

PageAdapter extends FragmentStatePagerAdapter

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

@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}

最新更新