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
}
}