使用了recyclerview的fragment嵌套viewpager的问题
public class Main_Frag1 extends Fragment {
public static Main_Frag1 newInstance(Context context,Bundle bundle) {
Main_Frag1 newFragment = new Main_Frag1();
newFragment.setArguments(bundle);
return newFragment;
}
private RecyclerView re;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup parent,Bundle savedInstanceState)
{
View v=inflater.inflate(R.layout.recyclerview,parent,false);
re=(RecyclerView)v.findViewById(R.id.recyclerview);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
re.setLayoutManager(new LinearLayoutManager(re.getContext()));
re.setHasFixedSize(true);
MyAdapter my=new MyAdapter();
re.setAdapter(my);
}
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> // Recyclerview的MyAdapter
{
private ViewPager mvp;
private List<Fragment> lists=new ArrayList<>();
public MyAdapter()
{
}
public class ViewHolder extends RecyclerView.ViewHolder
{
public ViewHolder(View view)
{
super(view);
mvp=(ViewPager)view.findViewById(R.id.main_viewpager);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewgroup,int viewType)
{
View view=LayoutInflater.from(viewgroup.getContext()).inflate(R.layout.main_activity_frag1, viewgroup, false);
ViewHolder vh=new ViewHolder(view);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder viewholder,int position) //再一次加载的时候
{
Fragment view1=new View1();
Fragment view2=new View2();
lists.add(view1);
lists.add(view2);
mvp.setOffscreenPageLimit(3);
FragAdapter fragAdapter=new FragAdapter(getChildFragmentManager(),lists);
mvp.setAdapter(fragAdapter);
}
@Override
public int getItemCount()
{
return 1;
}
class FragAdapter extends FragmentPagerAdapter //FragAdapter类
{
private List<Fragment> lists;
public FragAdapter(FragmentManager fm,List<Fragment> list)
{
super(fm);
lists=list;
}
public Fragment getItem(int position)
{
return lists.get(position);
}
public int getCount()
{
return lists.size();
}
} // FragAdapter类
}
}
我在fragment里用了recyclerview,这时是没问题的,然后我就在布局文件里加了viewpager,再在recyclerview里嵌套viewpager,viewpager自己又加载两个fragment,运行的时候,刚开始加载这个fragment的时候是没问题的,然后就滑去了其他的fragment(最外层的这个fragment Main_Frag1)是在tablayout里的,这个tablayout里有6个fragment,当我再滑回Main_Frag1时,就崩溃了,
出现了 java.lang.IllegalArgumentException: No view found for id 0x7f0c006b (com.test_bilibili:id/main_viewpager) for fragment View1{6aa8e7b #0 id=0x7f0c006b android:switcher:2131492971:0} 这个错误
请问各位大这个问题应该如何解决?
public static Main_Frag1 newInstance(Context context,Bundle bundle) {
Main_Frag1 newFragment = new Main_Frag1();
newFragment.setArguments(bundle);
return newFragment;
}
private RecyclerView re;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup parent,Bundle savedInstanceState)
{
View v=inflater.inflate(R.layout.recyclerview,parent,false);
re=(RecyclerView)v.findViewById(R.id.recyclerview);
return v;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
re.setLayoutManager(new LinearLayoutManager(re.getContext()));
re.setHasFixedSize(true);
MyAdapter my=new MyAdapter();
re.setAdapter(my);
}
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> // Recyclerview的MyAdapter
{
private ViewPager mvp;
private List<Fragment> lists=new ArrayList<>();
public MyAdapter()
{
}
public class ViewHolder extends RecyclerView.ViewHolder
{
public ViewHolder(View view)
{
super(view);
mvp=(ViewPager)view.findViewById(R.id.main_viewpager);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewgroup,int viewType)
{
View view=LayoutInflater.from(viewgroup.getContext()).inflate(R.layout.main_activity_frag1, viewgroup, false);
ViewHolder vh=new ViewHolder(view);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder viewholder,int position) //再一次加载的时候
{
Fragment view1=new View1();
Fragment view2=new View2();
lists.add(view1);
lists.add(view2);
mvp.setOffscreenPageLimit(3);
FragAdapter fragAdapter=new FragAdapter(getChildFragmentManager(),lists);
mvp.setAdapter(fragAdapter);
}
@Override
public int getItemCount()
{
return 1;
}
class FragAdapter extends FragmentPagerAdapter //FragAdapter类
{
private List<Fragment> lists;
public FragAdapter(FragmentManager fm,List<Fragment> list)
{
super(fm);
lists=list;
}
public Fragment getItem(int position)
{
return lists.get(position);
}
public int getCount()
{
return lists.size();
}
} // FragAdapter类
}
}
我在fragment里用了recyclerview,这时是没问题的,然后我就在布局文件里加了viewpager,再在recyclerview里嵌套viewpager,viewpager自己又加载两个fragment,运行的时候,刚开始加载这个fragment的时候是没问题的,然后就滑去了其他的fragment(最外层的这个fragment Main_Frag1)是在tablayout里的,这个tablayout里有6个fragment,当我再滑回Main_Frag1时,就崩溃了,
出现了 java.lang.IllegalArgumentException: No view found for id 0x7f0c006b (com.test_bilibili:id/main_viewpager) for fragment View1{6aa8e7b #0 id=0x7f0c006b android:switcher:2131492971:0} 这个错误
请问各位大这个问题应该如何解决?
...全文
相关推荐
网易布局viewpager+fragment+scrollview+recycleview
直接用android studio打开这个文件 下载相对应的安卓版本 连接了网络的一个接口 recycleview的item有数据 界面还是挺美观的
ViewPager-Inside-RecyclerView
ViewPager-Inside-RecyclerView
Android嵌套滑动冲突的解决方法
本篇文章主要介绍了Android嵌套滑动冲突的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
android ViewPager 和 listview的共存问题
NULL 博文链接:https://1002878825-qq-com.iteye.com/blog/1469206
Android在多种设计下实现懒加载机制的方法
主要介绍了Android在多种设计下实现懒加载机制的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


