Android fragments 从RecyclerView适配器调用片段
我有一个在cardView中显示列表的recyclerView。此recyclerview位于viewPager选项卡中显示的一个片段中。我想在单击cardview中的缩略图时转到新片段 为了实现此功能,我在BindViewHolder上实现了以下功能: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
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();
}
}