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

时间:2017-07-14 19:08:02

标签: java android android-fragments android-viewpager

我正在编写一个使用ViewPager来包含3个屏幕的Android应用程序,可以通过左右滑动来访问这些屏幕。这些选项卡定义为具有单独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

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

1 个答案:

答案 0 :(得分:1)

1)删除此行:

pager.setOffscreenPageLimit(2);

它会导致片段保留其视图,而不是重新创建它的视图。

2)更改适配器类:

扩展FragmentStatePagerAdapter

PageAdapter extends FragmentStatePagerAdapter

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

  @Override
    public int getItemPosition(Object object) {

        return POSITION_NONE;
    }