Android 如何从使用ViewPager的FragmentActivity重新启动ListFragment中的加载程序?

Android 如何从使用ViewPager的FragmentActivity重新启动ListFragment中的加载程序?,android,android-viewpager,android-loadermanager,android-loader,Android,Android Viewpager,Android Loadermanager,Android Loader,我有一个ViewPagerFragmentActivity,其中包含3个选项卡,每个选项卡都是一个带有加载程序的ListFragment。 在该活动的初始化过程中,所有加载程序都已加载,到目前为止一切正常 我在重新启动加载程序的片段中实现了一个公共方法refresh():getLoaderManager().restartLoader(0,null,this) 当我从父活动调用它时,它抛出未附加到活动的非法状态异常片段。 有没有办法重新启动加载程序 编辑: 我的活动扩展了SherlockFrag

我有一个
ViewPager
FragmentActivity
,其中包含3个选项卡,每个选项卡都是一个带有加载程序的
ListFragment
。 在该活动的初始化过程中,所有加载程序都已加载,到目前为止一切正常

我在重新启动加载程序的片段中实现了一个公共方法
refresh()
getLoaderManager().restartLoader(0,null,this)

当我从父活动调用它时,它抛出未附加到活动的
非法状态异常片段。
有没有办法重新启动加载程序

编辑:

我的活动扩展了SherlockFragmentActivity
,其中我有一个适配器,它扩展了
FragmentPagerAdapter
,以管理寻呼机中的选项卡

public class UserPageFragmentActivity extends SherlockFragmentActivity{
   ...

    mTabsAdapter.addTab(mTabHost.newTabSpec(TAB_CHANNELS).setIndicator("Following"),
            UserPageListFragmentChannels.class, null);
   ...

     public void refresh(){

           switch (mTabHost.getCurrentTab()){
                     case CHANNELS:
                              ((UserPageListFragmentChannels)mTabsAdapter.getItem(CHANNELS)).refresh();
                              break;
        ...
           }

     }

}
现在,选项卡片段是:

public class UserPageListFragmentChannels extends SherlockListFragment implements
LoaderManager.LoaderCallbacks<Void> {

...
    public void refresh(){
        getLoaderManager().restartLoader(0, null, this);        
    }
...


}
公共类UserPageListFragmentChannel扩展SherlockListFragment实现
LoaderManager.LoaderCallbacks{
...
公共无效刷新(){
getLoaderManager().restartLoader(0,null,this);
}
...
}

因此,在进一步挖掘之后,我从“巴克赛德”找到了解决方案:

我在活动的refresh()中实现了相同的功能:


因此,在进一步挖掘之后,我从“巴克赛德”找到了解决方案:

我在活动的refresh()中实现了相同的功能:


如果您正在使用支持库,请调用
getSupportLoaderManager()
而不是
getLoaderManager()
我试图扩展ListFragment或SherlockListFragment,它们都接受getLoaderManager()而不是getSupportLoaderManager()。我现在得到的错误是illegalStateException片段未附加到活动…更新了我得到的异常。编辑过的帖子。这很奇怪
getSupportLoaderManager()
应该是它所需要的,因为默认情况下它使用支持库,这意味着您不应该使用
getLoaderManager()
。我说发布一些代码。如果您正在使用支持库,请调用
getSupportLoaderManager()
而不是
getLoaderManager()
我尝试扩展ListFragment或SherlockListFragment,它们都使用getLoaderManager()而不是getSupportLoaderManager()。我现在得到的错误是illegalStateException片段未附加到活动…更新了我得到的异常。编辑过的帖子。这很奇怪
getSupportLoaderManager()
应该是它所需要的,因为默认情况下它使用支持库,这意味着您不应该使用
getLoaderManager()
。我说发布一些你的代码。
UserPageListFragmentChannels fragment =  
              (UserPageListFragmentChannels) getSupportFragmentManager().findFragmentByTag("android:switcher:"+R.id.pager+":0"); 
          if(fragment != null)  // could be null if not instantiated yet 
          { 
             if(fragment.getView() != null)  
             { 
                // no need to call if fragment's onDestroyView()  
                //has since been called. 
                fragment.refresh(); // do what updates are required 
             } 
          }