Несовместимые типы в методе onCreateLoader, работающем с AsyncTaskLoader и Fragment

Я рассмотрел несколько примеров работы с AsyncTaskLoader и Fragment (https://gist.github.com/codeswimmer/884591) и я попытался сделать то же самое. Но теперь я не могу исправить ошибку несовместимых типов - в методе onCreateLoader. Я понятия не имею, почему это происходит, потому что я сделал то же самое.

FeedLoader.java

public class FeedLoader extends AsyncTaskLoader<ArrayList<RSSItemData>> {

    ArrayList<RSSItemData> listData;
    Context ctx;
    RSSItemData rssItem;
    final Integer HTTP_CONNECTION_TIMEOUT = 15;
    DBHelper dbHelper;


    public FeedLoader(Context context) {
        super(context);
        this.ctx = context;
        dbHelper = new DBHelper(ctx);
    }


    @Override
    public ArrayList<RSSItemData> loadInBackground() {

        listData = new ArrayList<RSSItemData>();

        if(!BaseUtils.isNetworkAvailable(ctx)) return getNewsFromDB();

        if(doWeHaveAnyNews()){

            Log.d("myLogs", "We have news!");

            String data = JSONUtils.getJSON("http://I-changed-URL.com", HTTP_CONNECTION_TIMEOUT*1000, ctx);
            JSONResult result  = new Gson().fromJson(data, JSONResult.class);
            listData = result.items;

            deleteAllNewsFromDB();
            putNewsIntoDB(listData);

        }
        else{

            Log.d("myLogs", "No news, retrieve from database");
            listData = getNewsFromDB();

        }

        Log.d("myLogs", "Size of listData - " + listData.size());

        return listData;
    }

    public boolean doWeHaveAnyNews() {...}
    public void putNewsIntoDB(ArrayList<RSSItemData> listData) {...}
    public void deleteAllNewsFromDB() {...}
    public ArrayList<RSSItemData> getNewsFromDB() {...}

}

RetrieveFeedFragment.java

public class RetrieveFeedFragment extends Fragment implements  LoaderManager.LoaderCallbacks<ArrayList<RSSItemData>> {

    private RecyclerView rvNews;
    LinearLayout progBarLinearLayout;
    ProgressBar progBar;
    TextView progBarText;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);

        getActivity().getSupportLoaderManager().initLoader(0, null, this).forceLoad();

        Log.d("myLogs", "Fragment onCreate");
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        Log.d("myLogs", "Fragment onCreateView");

        View v = inflater.inflate(R.layout.news_list_fragment, null);

        rvNews = (RecyclerView) v.findViewById(R.id.listViewNews);
        LinearLayoutManager llm = new LinearLayoutManager(getActivity());
        rvNews.setLayoutManager(llm);
        rvNews.setHasFixedSize(true);

        rvNews = (RecyclerView) v.findViewById(R.id.listViewNews);

        progBarLinearLayout = (LinearLayout) v.findViewById(R.id.progressBarLinearLayout);
        progBar = (ProgressBar) v.findViewById(R.id.progressBar);
        progBarText = (TextView) v.findViewById(R.id.progressBarText);

        return v;

    }


    @Override
    public Loader<ArrayList<RSSItemData>> onCreateLoader(int id, Bundle args) {
        return new FeedLoader(getActivity());
        /* Incompatible types ERROR
       Required - anroid.support.v4.content.Loader  <java.util.ArrayList<com.project.myproject.RetrieveFeed.RSSItemData>>
       Found - com.project.myproject.RetrieveFeed.FeedLoader
       */
    }

    @Override
    public void onLoadFinished(Loader<ArrayList<RSSItemData>> loader, ArrayList<RSSItemData> listData) {
        // RSSAdapter = new RSSAdapter(listData, getActivity());
        // rvNews.setAdapter(RSSAdapter);
        // progBarLinearLayout.setVisibility(LinearLayout.GONE);
        Log.d("myLogs", "onLoadFinished");
    }
    @Override
    public void onLoaderReset(Loader<ArrayList<RSSItemData>> loader) {
        Log.d("myLogs", "onLoaderReset");
    }
}

MainActivity.java (так, на всякий случай)

public class MainActivity extends FragmentActivity {

    RetrieveFeedFragment fragment;;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if(savedInstanceState == null){
            fragment = new RetrieveFeedFragment();
            getSupportFragmentManager().beginTransaction().add(R.id.fragment_news, fragment, "retrieve_feed_tag").commit();
            Log.d("myLogs", "New Fragment in Activity");
        }
        else{
            fragment = (RetrieveFeedFragment) getSupportFragmentManager().findFragmentByTag("retrieve_feed_tag");
            Log.d("myLogs", "Get old Fragment by tag in Activity");
        }

    }
}

Ответы на вопрос(1)

Решение Вопроса

android.support.v4.app.LoaderManager.LoaderCallbacks<D> вместоandroid.app.LoaderManager.LoaderCallbacks<D> в вашем фрагменте иandroid.support.v4.content.AsyncTaskLoader<D> в вашемFeedLoader

 Python Lord21 апр. 2017 г., 00:58
Просто чтобы добавить некоторые детали - используйте «android.support.v4.content.AsyncTaskLoader» вместо импорта «android.content.AsyncTaskLoader»
 Daryn K.29 июн. 2016 г., 15:18
Магия! Оно работает! Но все же я не могу избежать обновления вида после поворота экрана, но это вопрос к другой теме. Спасибо!

Ваш ответ на вопрос