我想创建带有PagerView的片段,但运行以下代码会返回一个IllegalStateException:
源代码:
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);
}
}
IllegalStateException:
进程:com.company.user.blabla,pid:22256 java.lang.illegalstate异常:带有适配器的ViewPager com.company.user.blabla.fragments.homeFragment$pageradapter@ca3cef6需要一个视图id(位于android.support.v4.app.fragmentpageradapter.81)(位于android.support.v4.view.ViewPager.populate(位于ViewPager.java:1119)(位于android.support.v4.view.ViewPager.populate(位于:685)在Android.support.design.widget.AppBarLayout.OnMeasure(AppBarLayout.java:223)在Android.view.view.measure(view.java:21998)在Android.view.view.view.measureChild(viewgroup.java:6580)在Android.support.design.widget.coordinatorLayout.OnMeasureChild(coordinatorLayout.java:713)在1998)在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)在nal.policy.decorview.onMeasure(decorview.java:721)在Android.view.view.measure(view.java:21998)在Android.view.viewrootimpl.performMeasure(viewrootimpl.java:2410)在Android.view.viewrootimpl.measurehierarchy(viewrootimpl.java:1498)在Android.view.viewrootimpl.performtraversal(viewrootimpl.java:1751)在
我对安卓系统没有太多经验。搜索没有用或者我搜索不正确。我能做些什么来解决这个问题?
您的pagerAdapter不是正确的流..请刷新此链接
https://guides.codepath.com/android/viewpager-with-fragmentpageradapter
希望这对你有帮助…