Ошибка выгрузки несовместимых типов в LoaderManager - PullRequest
0 голосов
/ 28 марта 2019

Я звоню AsyncTaskLoader в одном из фрагментов, которые я создал. Я импортировал import android.app.LoaderManager; и получаю сообщение об ошибке при вызове этого метода LoaderManager manager = getLoaderManager();. У меня то же самое происходит в моей основной деятельности, и там нет ошибки.

Он также попросил меня импортировать android.support.v4.app.LoaderManager вместо android.support.v4.app.LoaderManager. Когда я это сделал, он показывает, что getLoaderManager() устарел.

Мой FragmentExchangeList.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.app.LoaderManager;
import android.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class FragmentExchangeList extends Fragment implements   
LoaderManager.LoaderCallbacks<ArrayList<ExchangeListData>> {              
    private List<ExchangeListData> mExchangeListData;
    private ListView mExchangeListView;
    private AutoCompleteTextView mSetbaseCurrency;
    private String linkForCurrencyList;
    private static final int CURRENCY_List_LOADER_ID = 2;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_exchange_list, container, false);

        mExchangeListData = new ArrayList<ExchangeListData>();
        mExchangeListView = rootView.findViewById(R.id.exchange_list_view);
        mSetbaseCurrency = rootView.findViewById(R.id.set_base_currency);

        linkForCurrencyList = "https://ratesapi.io/api/latest?base="+mSetbaseCurrency.getText().toString();
        LoaderManager manager = getLoaderManager();
        manager.initLoader(CURRENCY_List_LOADER_ID, null, this);

        return rootView;
    }


    @Override
    public Loader<ArrayList<ExchangeListData>> onCreateLoader(int i, Bundle bundle) {
        return new ExchangeListBackground(getContext(), linkForCurrencyList);
    }

    @Override
    public void onLoadFinished(Loader<ArrayList<ExchangeListData>> loader, ArrayList<ExchangeListData> data) {
        mExchangeListData.clear();
        if(data != null && !data.isEmpty()){
            mExchangeListData.addAll(data);
        }
    }

    @Override
    public void onLoaderReset(Loader<ArrayList<ExchangeListData>> loader) {
        mExchangeListData.clear();
    }
}

Ошибка: error: incompatible types: android.support.v4.app.LoaderManager cannot be converted to android.app.LoaderManager

Ответы [ 2 ]

1 голос
/ 28 марта 2019

У меня была такая же проблема в прошлом.fragment, который вы используете, взят из библиотеки поддержки, поэтому вам нужно использовать пакет android.support.v4.app.LoaderManager и LoadManager.

Но поиск об устаревании вызван тем, что Google устарел во всем стеке загрузчиков. Они рекомендуют использовать вакансии.Таким образом, для решения вашей проблемы используйте устаревший пакет и поместите подавленный устаревший комментарий в Android Studio, чтобы он не раздражал.

1 голос
/ 28 марта 2019

удалить import android.app.LoaderManager; и добавить эту строку import android.support.v4.app.LoaderManager

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...