该片段的抽象类将继承其他片段。它们都是相同的,除了一件事 - 它们将加载不同的数据。
public abstract class MovieFragment extends Fragment
implements LoaderManager.LoaderCallbacks<List<Movie>> {
protected abstract List<Movie> getMovies(int currentPage);
//fragment implementation body
private static class MovieLoader extends AsyncTaskLoader<List<Movie>> {
public MovieLoader(Context context) {
super(context);
}
@Override
protected void onStartLoading() {
forceLoad();
}
@Override
protected void onStopLoading(){
cancelLoad();
}
@Override
public List<Movie> loadInBackground() {
return getMovies(3);
}
}
}
尝试过这样,但由于MovieLoader应该是静态的,因此无法使用getMovies(int currentPage)。建议如何实施? 继承抽象类MovieFragment的类的实现(例如):
public class PopularMovieFragment extends MovieFragment {
public static Fragment getInstance(){
return new PopularMovieFragment();
}
@Override
protected List<Movie> getMovies(int currentPage) {
return new MovieFetch().getPopularMovies();
}
}