gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:27:37 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com