FragmentManager IllegalStateException:没有主机

loc*_*ost 20 android android-layout android-fragments android-viewpager

更新:当我把nullcheks(片段!= null,getActivity()!= null)放在我能做的时候崩溃了.

我的应用程序使用ViewPager(屏幕外限制5),并使用getSupportFragmentManager()初始化FragmentStatePagerAdapter.每个页面都有自己的片段和后台堆栈.

应用程序在启动时崩溃.问题仅发生在preLollipop设备和仿真器上.使用最新支持lbrary(尝试24.0.0也 - 相同结果)Stacktrace:

java.lang.IllegalStateException:在android.support的android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1267)的android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1267)处没有主机.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:2138)位于android.support.v4.app.Fragment.onCreate(Fragment.java:1254)android.support.v4.app.Fragment.performCreate(Fragment.java) :2062)在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1051)的android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)android.support.v4.app上的android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1051). BackStackRecord.run(BackStackRecord.java:758)android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1632)at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:637)at android android.support.v4.view.ViewPager.pop上的.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166)ulate(ViewPager.java:1237)位于android.sview的android.support.v4.view.ViewPager.populate(ViewPager.java:1085)android.sview.v4上的android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1611) .View.measure(View.java:16497)位于android.widget.Linout.measureVertical的android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)上的android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) LinearLayout.java:695)在android.view.measure.View.measure(View.java:16497)的android.widget.Linear.onMeasure(LinearLayout.java:588)android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) )在android.widget.FreeLayout.onMeasure(FrameLayout.java:310)的android.view.measure.View.measure(View.java:16497)android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:719)android.widget Android.widge上android.view.visionGroup.measureChildWargins(ViewGroup.java:5125)的android.view.View.measure(View.java:16497)的.RelativeLayout.onMeasure(RelativeLayout.java:455)t.FrameLayout.onMeasure(FrameLayout.java:310)位于android.view.view.measure(View.java:16497)android.view的android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) .ViewGroup.measureChildWithMargins(ViewGroup.java:5125)位于android.view.measure.View.measure(View.java:16497)的android.view.FreeLayout.onMeasure(FrameLayout.java:310),位于android.view.ViewGroup.measureChildWithMargins( ViewGroup.java:5125)在android.view.measure.View.measure(View.java:16497)的android.widget.FrameLayout.onMeasure(FrameLayout.java:310)android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) )在Android.widget.Lineout.measureVertical(LinearLayout.java:695)的android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)android.view上的android.widget.LinearLayout.onMeasure(LinearLayout.java:588) .View.measure(View.java:16497)位于android.widget.FrameLayout.onMeasure(FrameLayout.java:310)的android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2291)的android.view.View.measure(View.java:16497)在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java) :1912)在android.view.ViewRootImpl.measureHversy(ViewRootImpl.java:1291)的android.view.ViewRootImpl.measureHversal(ViewRootImpl.java:1291)android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996) .view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5600)在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:761)的android.view.Choreographer.doCallbacks(Choreographer.java:574).在android.view.Handler的android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:747)的android.O. .dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:136)

Nan*_*dhu 0

当您使用 viewPager 时,请确保您遵循以下做法

  1. 在构造函数中调用 super(fragmentManager)
  2. 如果您在 Fragment 中使用 Viewpager,请将 getChildFragmentManager 传递给 Adapter