Ich habe ein Problem mit Loadern. Ich habe Fragment, er implementiert LoaderManager.LoaderCallbacks. Wenn onCreateLoader ausgeführt wird, tritt der Fehler Inkompatible Typen auf. (Falscher Kontext) I Codebeispiele verwendet "getActivity()" oder "getContext()". Wie kann man einen Fehler beheben? Vielen Dank.Inkompatible Typen beim Erstellen Loader
Fragment
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);
}
Loader
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);
}
}
Imports Fragment
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;
Können Sie auch die Importe hinzufügen, damit wir vergleichen können. – Enzokie
@Enzokie Ich habe hinzugefügt –
Eigentlich dieses "getActivity(). GetSupportLoaderManager(). InitLoader (LOADER_ID, getArguments(), this);' kompiliert mich nicht, da es eine Aktivität und keine FragmentActivity ist, es sei denn Sie werfen es. – Enzokie