android - 在 Fragment 中使用 viewPager 时在 Fragment 中崩溃
问题描述
我在 Fragment 中使用 ViewPager。我在 Crashlytics 中收到以下崩溃报告。请帮忙看看如何解决这个问题
Fatal Exception: java.lang.IllegalStateException
Child FragmentManager of MovieFragmentBase{9fa4a22 #1 id=0x7f0a0468 MovieFragmentBase} was not destroyed and this fragment is not retaining instance
android.support.v4.app.Fragment.performDetach (Unknown Source)
android.support.v4.app.FragmentManagerImpl.moveToState (Unknown Source)
android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState (Unknown Source)
android.support.v4.app.BackStackRecord.executePopOps (Unknown Source)
android.support.v4.app.FragmentManagerImpl.executeOps (Unknown Source)
android.support.v4.app.FragmentManagerImpl.executeOpsTogether (Unknown Source)
android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (Unknown Source)
android.support.v4.app.FragmentManagerImpl.execPendingActions (Unknown Source)
android.support.v4.app.FragmentManagerImpl$1.run (Unknown Source)
android.os.Handler.handleCallback (Handler.java:822)
android.os.Handler.dispatchMessage (Handler.java:104)
android.os.Looper.loop (Looper.java:207)
android.app.ActivityThread.main (ActivityThread.java:5736)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:910)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:771)
请检查我在 MovieFragmentBase 中使用的 viewPagerAdapter 的代码。
class ViewPagerAdapter extends FragmentStatePagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
解决方案
尝试添加setRetainInstance(true);
你onCreate()
的MovieFragmentBase
,也许这会对你有所帮助
有关setRetainInstance
以下链接的更多信息
推荐阅读
- c# - 从gridview内部的datatemplate访问控制
- cygwin - 在 cygwin32 中使用 mingw32 glfw3 和 glew32s 二进制文件,而不将 cygwin X11 GLX 与 WGL 混合
- azure-cloud-services - 是否有每隔一段时间重新启动一个 Azure 经典云服务角色?
- javascript - SweetAlert 不等待
- java - 当我在其 ViewPort 中绘制 JPanel 时,JScrollPane 不滚动
- python - 将文本写入单行字符串之间
- javascript - 将字符串解释为转义字符串
- spring-integration - 基于当前日期的spring集成动态过滤器
- ios - 为什么 webkit 视图无法连接到 App Store
- android - 在“expo publish”之后,React Native Expo 应用程序不会在其他设备上打开