如何同时使用 AppCompatActivity 和 RecyclerView?

How to use AppCompatActivity and RecyclerView and the same time?

所以我有一个使用 RecyclerView 的应用程序,但是当我单击回收器包含的图像时,我希望它打开一个 DialogFragment。我的问题是当我点击图片时,我需要使用 getSupportFragmentManager() 但它不允许我这样做,因为我需要将我的 class 扩展到 AppCompatActivity 但我已经将它扩展到 RecyclerView.Adapter<RecyclerViewAdapterPerfil.ViewHolder>。 我能做些什么?我已经尝试创建一个不同的 class 并使其扩展 AppCompatActivity 但它不起作用并给了我这个错误: java.lang.IllegalStateException: Activity 已被摧毁。 这是给我错误的 class。

package com.example.registarmysql;

public class RecyclerViewAdapterPerfil extends RecyclerView.Adapter<RecyclerViewAdapterPerfil.ViewHolder> {

private static final String TAG = "RecyclerViewAdapter";
private String aFotografiaUtilizador;
private String aNomeUtilizador;
private String aEmailUtilizador;
private String aPasswordUtilizador;
private Context aContext;

public RecyclerViewAdapterPerfil(String fotografiaUtilizador, String nomeUtilizador, String emailUtilizador, String passwordUtilizador, Context context) {
    this.aFotografiaUtilizador = nomeUtilizador;
    this.aNomeUtilizador = fotografiaUtilizador;
    this.aEmailUtilizador = emailUtilizador;
    this.aPasswordUtilizador = passwordUtilizador;
    this.aContext = context;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_listitem, parent, false);
    ViewHolder viewHolder = new ViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
    Log.d(TAG, "onBindViewHolder: called");

    Glide.with(aContext).asBitmap().load(aNomeUtilizador).dontTransform().into(holder.fotografiaUtilizador);
    holder.nomeUtilizador.setText(aFotografiaUtilizador);
    holder.emailUtizador.setText(aEmailUtilizador);
    holder.passwordUtilizador.setText(aPasswordUtilizador);

    holder.fotografiaUtilizador.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            abrirCaixa();
            Log.d(TAG, "onClick: clicked on: " + aFotografiaUtilizador);
            Toast.makeText(aContext, "Carregou na foto", Toast.LENGTH_SHORT).show();
        }
    });
}

@Override
public int getItemCount() {
    return 1;
}

public class ViewHolder extends RecyclerView.ViewHolder {

    CircleImageView fotografiaUtilizador;
    TextView nomeUtilizador;
    TextView emailUtizador;
    TextView passwordUtilizador;
    RelativeLayout parentLayout;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        fotografiaUtilizador = itemView.findViewById(R.id.fotografia_perfil);
        nomeUtilizador = itemView.findViewById(R.id.nome_utilizador);
        emailUtizador = itemView.findViewById(R.id.email_utilizador);
        passwordUtilizador = itemView.findViewById(R.id.password_utilizador);
        parentLayout = itemView.findViewById(R.id.parent_layout);
    }
}

static class novaClasse extends AppCompatActivity{

    public void abrirCaixaNova(){
        CaixaEditarFotografiaPerfil caixa = new CaixaEditarFotografiaPerfil();
        caixa.show(getSupportFragmentManager(), "Exemplo de caixa");
    }
}
private void abrirCaixa() {
    new novaClasse().abrirCaixaNova();
}

}

错误在

public void abrirCaixaNova(){
        CaixaEditarFotografiaPerfil caixa = new CaixaEditarFotografiaPerfil();
        caixa.show(getSupportFragmentManager(), "Exemplo de caixa");
    }

将 FragmentManager 传递给 RecyclerViewAdapterPerfil 的构造函数有效。