0

我有一个ViewPager FragmentActivity包含 3 个选项卡的选项卡,每个选项卡ListFragment都有一个加载器。在这个活动的初始化中,所有的加载器都加载了,到目前为止一切都很好。

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

当我从它抛出的父活动中调用它时illegalStateException Fragment not attached to Activity。任何想法如何重新启动加载程序?

编辑:

我的活动扩展SherlockFragmentActicity,其中我有一个适配器,可以扩展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);        
    }
...


}
4

1 回答 1

3

因此,在深入挖掘之后,我从“barkside”中找到了解决方案:Update data in ListFragment as part of ViewPager

我在我的活动的刷新()中实现它相同:

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 
             } 
          } 
于 2012-09-04T11:53:09.553 回答