我有此错误,您无法在尚未附加的View或Fragment上启动加载,而其中getActivity()返回null(通常在附加Fragment之前或销毁Fragment之后调用getActivity()时会发生这种情况)。能帮我吗,我不知道该怎么办,仅当我使用滑行时才会出现问题,但我需要在ImageView上放置图像,所以我不知道该怎么办,我是新手
这是片段
public class ingredintes_frag extends Fragment {
FragmentActivity context = getActivity();
ArrayList<modeloIngredientes> arrayListIngredientes = new ArrayList<>();
AdaptadorIngredientes adaptadorIngredientes;
@Override
public void onAttach(@NonNull Context contexto) {
super.onAttach(contexto);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_ingredintes_frag, container, false);
final RecyclerView recyclerView =view.findViewById(R.id.rv_ingredientes);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference reference = db.collection("ingredientes");
reference.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (QueryDocumentSnapshot documentSnapshot: queryDocumentSnapshots)
{
arrayListIngredientes.add(documentSnapshot.toObject(modeloIngredientes.class));
}
}
}).addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
adaptadorIngredientes = new AdaptadorIngredientes(arrayListIngredientes,context);
recyclerView.setAdapter(adaptadorIngredientes);
}
});
return view;
}
}
及其适配器类
public class AdaptadorIngredientes extends RecyclerView.Adapter<AdaptadorIngredientes.ViewHolder> {
ArrayList<modeloIngredientes> ingredientes;
Context context;
public AdaptadorIngredientes(ArrayList<modeloIngredientes> arrayListIngredientes, Context context) {
this.context =context;
this.ingredientes = arrayListIngredientes;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.rv_row_ingre,null,false);
context = parent.getContext();
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
holder.txvnombre.setText(ingredientes.get(position).getNomIngre());
holder.txvdesc.setText(ingredientes.get(position).getDesIngre());
Glide
.with(context)
.load(ingredientes.get(position).getImgIngre())
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
holder.mProgressBar1.setVisibility(View.GONE);
holder.imageView.setVisibility(View.VISIBLE);
holder.imageView.setImageResource(R.drawable.cheficon);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
holder.mProgressBar1.setVisibility(View.GONE);
holder.imageView.setVisibility(View.VISIBLE);
return false;
}
}).override(180,143).centerCrop()
.into(holder.imageView);
}
@Override
public int getItemCount() {
return ingredientes.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView txvnombre,txvdesc;
ImageView imageView;
ProgressBar mProgressBar1;
public ViewHolder(@NonNull View itemView) {
super(itemView);
txvnombre = itemView.findViewById(R.id.txtingrediente);
txvdesc = itemView.findViewById(R.id.txtdes);
}
}
}
也许您没有以正确的方式获得上下文。你可以试试吗: