android应用程序片段会无缘无故地分离

xfb7svmp  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(313)

我正在写一个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 我也尝试过使用片段管理器来存储我的片段,但是没有效果。首先,有没有办法确保一个片段被加载-我认为这就是这里发生的事情,其次,如果没有,我该如何检测这个状态并重新创建视图?
我可以张贴代码,如果需要,只要告诉我张贴什么。
适配器类:https://hastebin.com/zayewipimo.java
我的oncreate的相关部分:https://hastebin.com/gubikixude.java

wqsoz72f

wqsoz72f1#

1) 删除此行:

pager.setOffscreenPageLimit(2);

它将导致片段保留它的视图,而不是重新创建它的视图。
2) 适配器类中的更改:
扩展 FragmentStatePagerAdapter

PageAdapter extends FragmentStatePagerAdapter

3) 越过 getItemPosition() 并使其返回 POSITION_NONE .

@Override
    public int getItemPosition(Object object) {

        return POSITION_NONE;
    }

相关问题