创建 Loader 时不兼容的类型

Incompatible types when create Loader

我对装载机有一些问题。 我有Fragment,他实现LoaderManager.LoaderCallbacks。 当我执行 onCreateLoader 时,发生错误 Incompatible types。 (错误的上下文) 我的代码示例使用 "getActivity()" 或 "getContext()"。如何解决错误?谢谢

片段

public class FitnessDataFragment extends Fragment implements LoaderManager.LoaderCallbacks<List<AllFitnessDataModel>> {
    private Loader<List<AllFitnessDataModel>> loader;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        loader = getActivity().getSupportLoaderManager().initLoader(LOADER_ID, getArguments(), this);
    }

    @Override
    public Loader<List<AllFitnessDataModel>> onCreateLoader(int id, Bundle args) {
        return new AsyncTracksLoader(getActivity(),args);
    }

加载器

public class AsyncTracksLoader extends AsyncTaskLoader<List<AllFitnessDataModel>> {
private List<AllFitnessDataModel> dataModelList = new ArrayList<>();
private int typeReminder;

public AsyncTracksLoader(Context context, Bundle args) {
    super(context);
    if (args != null) {
        typeReminder = args.getInt(ARG_SECTION_NUMBER);
    }
}


@Override
protected void onStartLoading() {
    super.onStartLoading();
    if(dataModelList!=null){
        deliverResult(dataModelList);
    }else {
        forceLoad();
    }
}


@Override
public List<AllFitnessDataModel> loadInBackground() {
    //do something
    return dataModelList;
}


@Override
public void deliverResult(List<AllFitnessDataModel> data) {
    dataModelList = data;
    super.deliverResult(data);
}
}

导入片段

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.egoriku.catsrunning.App;
import com.egoriku.catsrunning.R;
import com.egoriku.catsrunning.activities.ScamperActivity;
import com.egoriku.catsrunning.activities.TrackOnMapsActivity;
import com.egoriku.catsrunning.activities.TracksActivity;
import com.egoriku.catsrunning.adapters.FitnessDataAdapter;
import com.egoriku.catsrunning.adapters.interfaces.IOnItemHandlerListener;
import com.egoriku.catsrunning.loaders.AsyncTracksLoader;
import com.egoriku.catsrunning.models.AllFitnessDataModel;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.ValueEventListener;

import java.util.List;

片段有自己的加载器管理器 - 尝试调用 getLoaderManager() 而不是 getActivity().getSupportLoaderManager()

还要确保在 android.appandroid.support.v4.app 中使用 LoaderManagerLoaderManager.LoaderCallbacks 等保持一致。

还有一件事要确保,当您编写 "implements ..." 并弹出建议时,请确保您 select 根据您实现加载程序的方式使用正确的版本。它有两个版本。一个是辅助一个,一个是普通的。