java - 单击 recyclerview 项目后无法更改 fragment

标签 java android xml android-fragments android-recyclerview

我的主要 Activity 中有 RecyclerView。我想在单击不同的 recyclerview 项目后更改不同的 fragment 。我通过使用 onbindviewholder() 中的位置来尝试此操作,但当我单击 recyclerview 项目时,我无法更改 fragment 。我没有收到任何错误,但同时点击 recyclerview 时没有发生任何事情。请检查我的代码并告诉我哪里错了或者缺少哪一行代码。

RecyclerAdapter代码:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
ArrayList<NewModel> newModels;
Context context;
public RecyclerAdapter(ArrayList<NewModel>newModels, Context context){
    this.newModels = newModels;
    this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recy_layout, parent,false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
    holder.imageView.setImageResource(newModels.get(position).getImg());
    holder.textView.setText(newModels.get(position).getText());
    holder.imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(position ==1){
                ((FragmentActivity)context).getSupportFragmentManager().beginTransaction()
                        .replace(R.id.framelayout, new FirstFragment());
            }
            else if(position ==2){
                ((FragmentActivity)context).getSupportFragmentManager().beginTransaction()
                        .replace(R.id.framelayout, new SecondFragment());
            }

        }
    });

}

@Override
public int getItemCount() {
    return newModels.size();
}

public class ViewHolder extends RecyclerView.ViewHolder {
    ImageView imageView;
    TextView textView;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        imageView = itemView.findViewById(R.id.cirlceimg);
        textView = itemView.findViewById(R.id.text1);
    }
}

}

最佳答案

你忘记调用 commit()

这样做:

(((FragmentActivity)context).getSupportFragmentManager().beginTransaction()
                        .replace(R.id.framelayout, new SecondFragment()).commit();

在事务上调用 commit() 之前, fragment 不会呈现,因为事务使用构建器模式,并且在构建器模式中,有一个方法说我不想做任何其他事情,只是创建对象,通常这些方法在本例中分别是 create()build()commit()

关于java - 单击 recyclerview 项目后无法更改 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61187881/

相关文章:

java - 避免 Jboss 中的 server.log 调试行

android - 如何在 gridview 中获取复选框状态

android - 在 android 上出售广告空间

c - 使用 libxml 函数进行错误处理

java - 按位置删除元素

Java - 它是免费的吗?

Java同步-等待来自服务器的数据

java - 升级 Android Studio NDK : CMAKE_C_COMPILER and CMAKE_CXX_COMPILER not set 后出错

java - 在 java 应用程序、gwt 或 android 应用程序中存储常量值

java - 如何在 processContents=lax 中指定外部模式