【发布时间】:2012-09-03 14:15:59
【问题描述】:
我有一个 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);
}
...
}
【问题讨论】:
-
如果您使用支持库,请致电
getSupportLoaderManager()而不是getLoaderManager() -
我尝试扩展 ListFragment 或 SherlockListFragment,它们都采用 getLoaderManager() 而不是 getSupportLoaderManager()。我现在得到的错误是非法状态异常片段未附加到活动...
-
更新了我得到的异常。已编辑帖子。
-
这很奇怪。
getSupportLoaderManager()应该是它所需要的,因为它默认使用支持库,这意味着您不应该使用getLoaderManager()。我说发布你的一些代码。
标签: android android-viewpager android-loadermanager android-loader