我正在使用appcompat支持库v22并使用三个片段从MainActivity创建一个ViewPager。以下是设置ViewPager的代码,该代码从MainActivity的onCreate()
调用。
private void setupViewPager(ViewPager viewPager) {
mTabAdapter = new Adapter(getSupportFragmentManager());
mTabAdapter.addFragment(new CarFragment(), "Cars");
mTabAdapter.addFragment(new VehiclesRecycleListFragment(), "Vehicles");
mTabAdapter.addFragment(new BikeFragment(), "Bikes");
viewPager.addOnPageChangeListener(new InternalViewPagerListener());
viewPager.setAdapter(mTabAdapter);
}
所有三个片段都使用LoaderManager
加载数据并在RecyclerView中显示。问题是getLoaderManager()中的一个片段(VehiclesRecycleListFragment),throws "IllegalStateException: Fragment not attached to Activity"
在运行很长时间后(可能在几次简历之后)随机出现。由于我们正在捕获该异常,因此片段不会崩溃,但功能现在已经瘫痪。在此之前,应用程序运行正常。
我们尝试调试到getLoaderManager,以下是检查mHost后抛出异常的代码
/**
* Return the LoaderManager for this fragment, creating it if needed.
*/
public LoaderManager getLoaderManager() {
if (mLoaderManager != null) {
return mLoaderManager;
}
if (mHost == null) {
throw new IllegalStateException("Fragment " + this + " not attached to Activity");
}
mCheckedForLoaderManager = true;
mLoaderManager = mHost.getLoaderManager(mWho, mLoadersStarted, true);
return mLoaderManager;
}
我无法理解,如果一个片段在ViewPager中显示并正常运行,它怎么会没有附加到活动上。
请帮我解决此问题,如果您需要更多详细信息,请与我们联系。