我有ViewPager
FragmentActivity
,其中包含3个标签,每个标签都是ListFragment
,其中包含Loader。
在这个活动的初始化中,所有的加载器都加载了,到目前为止一直很好。
我在重新启动加载程序的片段中实现了一个公共方法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);
}
...
}
答案 0 :(得分:2)
所以经过多挖掘后,我在“barkside”找到了解决方案:Update data in ListFragment as part of ViewPager
我在我的活动的refresh()中实现它:
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
}
}