如何调用回收适配器上的getFragmentManager?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

我将我的应用程序的ListView转换为RecyclerView。在ListView上,实现OnClickListener非常容易,但在RecyclerView中,我们必须在适配器中执行此操作。我想在用户点击一个项目时打开一个新的片段。为此,我必须在适配器中调用FragmentManager,这是我无法做到的。这是我的RecyclerAdapter代码:

public ListItemViewHolder(View itemView) {
            super(itemView);
            title = (TextView) itemView.findViewById(R.id.title);
            description = (TextView) itemView.findViewById(R.id.description);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            //Call FragmentManager and add Fragment to it.
            }
        }

所以,如何调用FragmentManager并在其中添加碎片。有没有比这更像SendBroadcast或任何其他方法更好的方法。

提问于
用户回答回答于

你只需要在构造函数中传递的活动上下文。一定new Adapter(this,...)要从活动和new Adapter(getActivity(),...)碎片中调用。

private Context context;

@Override
public void onClick(View v) {
    FragmentManager manager = ((Activity) context).getFragmentManager();
}
用户回答回答于

要添加到已批准的答案中:如果仍然出现错误,则可能需要更换此行;

FragmentManager manager = ((Activity)context).getFragmentManager();

有了这个

FragmentManager manager = ((AppCompatActivity)context).getSupportFragmentManager();

对我来说,这是因为我使用的support.v4.app.FragmentManager是正规的fragmentmanager

扫码关注云+社区