【问题标题】:Android app fragments in viewpager become detached for no apparent reasonviewpager 中的 Android 应用程序片段无缘无故地分离
【发布时间】:2017-07-14 19:08:01
【问题描述】:

我正在编写一个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

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

【问题讨论】:

  • 发布您的活动和 viewpager 适配器代码...
  • 活动的具体部分是什么?我没有发布完整的东西,因为有一些我不想分享的代码,无论如何它已经超过 400 行了。
  • 与viewpager和适配器初始化有关...添加片段...到viewpager
  • 均已发布,见上文。

标签: java android android-fragments android-viewpager


【解决方案1】:

1) 删除这一行:

pager.setOffscreenPageLimit(2);

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

2) 适配器类的变化:

扩展FragmentStatePagerAdapter 类

PageAdapter extends FragmentStatePagerAdapter

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

  @Override
    public int getItemPosition(Object object) {

        return POSITION_NONE;
    }

【讨论】:

  • 很遗憾没有。我仍然得到完全相同的错误。
  • 发布错误logcat..和clean build--&gt;Run apk
  • 我会先清理构建它,如果再次失败,则发布一个 logcat。
  • 是的。仍然失败。这是一个完整的堆栈:hastebin.com/raw/anobotugix
  • 很高兴为您提供帮助...如果有帮助,欢迎您接受答案。谢谢
猜你喜欢
  • 2017-10-22
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
相关资源
最近更新 更多