Java 片段内的ViewPager返回IllegalStateException
我希望创建带有PagerView inside fragment的选项卡,但运行以下代码会返回IllegalStateException: 源代码:Java 片段内的ViewPager返回IllegalStateException,java,android,android-fragments,android-viewpager,Java,Android,Android Fragments,Android Viewpager,我希望创建带有PagerView inside fragment的选项卡,但运行以下代码会返回IllegalStateException: 源代码: public class HomeFragment extends Fragment { private TabLayout tabs; private ClassesFragment classesFragment; private ExamsFragment examsFragment; @Override public void onC
public class HomeFragment extends Fragment {
private TabLayout tabs;
private ClassesFragment classesFragment;
private ExamsFragment examsFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
classesFragment = new ClassesFragment();
examsFragment = new ExamsFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_main_classes, container, false);
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
ViewPager viewPager = new ViewPager(getContext());
viewPager.setLayoutParams(new Toolbar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
setupViewPager(viewPager);
toolbar.addView(viewPager);
tabs = new TabLayout(getContext());
tabs.setLayoutParams(new Toolbar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
toolbar.addView(tabs);
tabs.setupWithViewPager(viewPager);
return v;
}
// Add Fragments to Tabs
private void setupViewPager(ViewPager viewPager) {
PagerAdapter adapter = new PagerAdapter(getChildFragmentManager());
adapter.addFragment("Занятия", ExamsFragment.newInstance());
viewPager.setAdapter(adapter);
}
private class PagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments = new ArrayList<>();
private List<String> titles = new ArrayList<>();
public PagerAdapter(FragmentManager fm) {
super(fm);
fragments.add(ExamsFragment.newInstance());
titles.add("new");
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
public void addFragment(String title, Fragment fragment)
{
titles.add(title);
fragments.add(fragment);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
公共类HomeFragment扩展了片段{
专用标签;
私有类片段类片段;
私有ExamsFragment ExamsFragment;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
classesFragment=新的classesFragment();
examsFragment=新的examsFragment();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment\u主类,容器,假);
Toolbar Toolbar=getActivity().findViewById(R.id.Toolbar);
ViewPager ViewPager=新的ViewPager(getContext());
viewPager.setLayoutParams(新工具栏.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.MATCH_父级));
设置viewPager(viewPager);
工具栏.添加视图(viewPager);
tabs=newtablayout(getContext());
tabs.setLayoutParams(新工具栏.LayoutParams(ViewGroup.LayoutParams.MATCH_父项,ViewGroup.LayoutParams.WRAP_内容));
工具栏。添加视图(选项卡);
选项卡。使用viewPager进行设置(viewPager);
返回v;
}
//将片段添加到选项卡
专用无效设置ViewPager(ViewPager ViewPager){
PagerAdapter适配器=新的PagerAdapter(getChildFragmentManager());
adapter.addFragment(“ааааааб”,examfragment.newInstance());
viewPager.setAdapter(适配器);
}
私有类PagerAdapter扩展了FragmentPagerAdapter{
私有列表片段=新的ArrayList();
私有列表标题=新的ArrayList();
公共页雷达(碎片管理器fm){
超级(fm);
add(ExamsFragment.newInstance());
标题。添加(“新”);
}
@凌驾
公共片段getItem(int位置){
返回碎片。获取(位置);
}
public void addFragment(字符串标题,片段)
{
标题。添加(标题);
片段。添加(片段);
}
@凌驾
public int getCount(){
返回fragments.size();
}
@凌驾
公共字符序列getPageTitle(int位置){
返回标题。获取(位置);
}
}
非法州例外情况:
public class HomeFragment extends Fragment {
private TabLayout tabs;
private ClassesFragment classesFragment;
private ExamsFragment examsFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
classesFragment = new ClassesFragment();
examsFragment = new ExamsFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_main_classes, container, false);
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
ViewPager viewPager = new ViewPager(getContext());
viewPager.setLayoutParams(new Toolbar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
setupViewPager(viewPager);
toolbar.addView(viewPager);
tabs = new TabLayout(getContext());
tabs.setLayoutParams(new Toolbar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
toolbar.addView(tabs);
tabs.setupWithViewPager(viewPager);
return v;
}
// Add Fragments to Tabs
private void setupViewPager(ViewPager viewPager) {
PagerAdapter adapter = new PagerAdapter(getChildFragmentManager());
adapter.addFragment("Занятия", ExamsFragment.newInstance());
viewPager.setAdapter(adapter);
}
private class PagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments = new ArrayList<>();
private List<String> titles = new ArrayList<>();
public PagerAdapter(FragmentManager fm) {
super(fm);
fragments.add(ExamsFragment.newInstance());
titles.add("new");
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
public void addFragment(String title, Fragment fragment)
{
titles.add(title);
fragments.add(fragment);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
流程:com.company.user.blabla,PID:22256
java.lang.IllegalStateException:带适配器的ViewPager com.company.user.blabla.fragments.HomeFragment$PagerAdapter@ca3cef6需要视图id
在android.support.v4.app.FragmentPagerAdapter.startUpdate(FragmentPagerAdapter.java:81)上
在android.support.v4.view.ViewPager.populate上(ViewPager.java:1119)
位于android.support.v4.view.ViewPager.populate(ViewPager.java:1087)
在android.support.v4.view.ViewPager.onMeasure上(ViewPager.java:1613)
在android.view.view.measure上(view.java:21998)
位于android.support.v7.widget.Toolbar.measureChildCollapseMargins(Toolbar.java:1547)
位于android.support.v7.widget.Toolbar.onMeasure(Toolbar.java:1655)
在android.view.view.measure上(view.java:21998)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
位于android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
位于android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
位于android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
位于android.support.design.widget.AppBarLayout.onMeasure(AppBarLayout.java:223)
在android.view.view.measure上(view.java:21998)
位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6580)
位于android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:713)
位于android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:1040)
位于android.support.design.widget.AppBarLayout$Behavior.onMeasureChild(AppBarLayout.java:770)
位于android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:783)
在android.view.view.measure上(view.java:21998)
位于android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1080)