2013-07-26 37 views
3

我有一個ViewPager與FragmentStatePagerAdapter。在ViewPager片段的onViewCreated方法我稱之爲LoadManager的initLoader方法來啓動這樣AsynLoaderTask和ViewPager

public void onViewCreated(final View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     list = (ListView) view.findViewById(R.id.list); 
     list.setEmptyView(view.findViewById(R.id.empty)); 
     getLoaderManager().initLoader(0, null, this).forceLoad(); 
    } 

課程的片段實現LoaderCallbacks的AsyncTaskLoader,找到的相關方法的實現如下:

@Override 
public Loader<List<String>> onCreateLoader(int id, Bundle args) { 

    logger.debug("Created loader"); 

    return new AsyncTaskLoader<List<String>>(getActivity()) { 

     @Override 
     public List<String> loadInBackground() { 
      return getResults(); 
     } 

    }; 
} 

@Override 
public void onLoadFinished(Loader<List<String>> loader, 
     List<String> data) { 
    logger.debug("loader finished"); 
    if (data != null) { 
     adapter = new CustomListAdapter(getActivity()); 
     list.setAdapter(adapter); 
     adapter.addAll(data); 
    } 
} 

@Override 
public void onLoaderReset(Loader<List<String>> loader) { 

} 

我遇到的問題是,第一頁一切按預期工作,但對於後續頁面,我看到onCreateLoader調用完成,AsyncTaskLoader的loadInBackground方法被調用,但onLoadFinished未被調用,因此現在交付結果。

我正在使用Android支持庫。

有誰知道我做錯了什麼?

+0

錯誤從版本13開始,此幫助: http://stackoverflow.com/a/18302563/1882287 – pavel

回答

0

所以我剛剛遇到了這個問題,看起來你正在做的和我一樣。看起來如果你的加載器都使用相同的id(在你的例子中爲0),如果一個頁面加載比另一個加載時間更長,他們將重新啓動並且在分頁時重疊。希望這可以與遇到此問題的人相關!