我的主要 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/