IllegalStateException:片段未附加到Activity

时间:2015-11-25 06:12:10

标签: android android-fragments android-viewpager android-loadermanager

我正在使用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中显示并正常运行,它怎么会没有附加到活动上。

请帮我解决此问题,如果您需要更多详细信息,请与我们联系。

0 个答案:

没有答案