Android fragments 从RecyclerView适配器调用片段

Android fragments 从RecyclerView适配器调用片段,android-fragments,android-recyclerview,android-viewpager,onclicklistener,Android Fragments,Android Recyclerview,Android Viewpager,Onclicklistener,我有一个在cardView中显示列表的recyclerView。此recyclerview位于viewPager选项卡中显示的一个片段中。我想在单击cardview中的缩略图时转到新片段 为了实现此功能,我在BindViewHolder上实现了以下功能: holder.thumboil.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ Fragment productDetailFragment=新的produ

我有一个在cardView中显示列表的recyclerView。此recyclerview位于viewPager选项卡中显示的一个片段中。我想在单击cardview中的缩略图时转到新片段

为了实现此功能,我在BindViewHolder上实现了以下功能:

holder.thumboil.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Fragment productDetailFragment=新的productDetailFragment();
(FragmentActivity)mContext.getSupportFragmentManager().beginTransaction()
.replace(R.id.grid\u page\u recycler\u视图,productDetailFragment).commit();
}
}); 
  • 在MAinActivity中创建一个替换片段的方法
  • 将ViewPager放入片段中,并从MainActivity中推送它
  • 现在在您的recyclerView适配器中调用replace fragment方法

我如何调用该方法您可以通过执行((MainActivity)context)调用它;
public void replaceFragment(Fragment fragment) {
    String backStateName = fragment.getClass().getName();
    FragmentManager manager = getSupportFragmentManager();
    boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);

    if (!fragmentPopped && manager.findFragmentByTag(backStateName) == null) {
        FragmentTransaction ft = manager.beginTransaction();
        ft.replace(R.id.frame_container, fragment, backStateName);
        ft.addToBackStack(backStateName);
        ft.commit();
    }
}