#java #android #android-viewpager
#java #Android #android-viewpager
Вопрос:
У меня есть пользовательский вид, расширяющий RelativeLayout, в котором у меня есть viewpager, очень похожий на эту карточку.
Проблема: когда я впервые добавляю представление в макет, все хорошо, но когда я оставляю текущий фрагмент и возвращаюсь к нему, в FragmentPagerAdapter нет никаких фрагментов. Вызываются все методы, но фрагменты не раздуваются
Пользовательский вид и адаптер:
SectionsPagerAdapter adapter = new SectionsPagerAdapter(((MainActivity)context).getSupportFragmentManager());
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(5);
tabLayout.setupWithViewPager(viewPager);
—
public class SectionsPagerAdapter extends FragmentPagerAdapter {
SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return Fragment_HourlyPage.newInstance();
case 1:
return Fragment_HourlyPage.newInstance();
case 2:
return Fragment_HourlyPage.newInstance();
case 3:
return Fragment_HourlyPage.newInstance();
case 4:
return Fragment_HourlyPage.newInstance();
}
return null;
}
@Override
public int getCount() {
return 5;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "10AM - 11AM";
case 1:
return "11AM - 12AM";
case 2:
return "12AM - 1PM";
case 3:
return "1PM - 2PM";
case 4:
return "2PM - 3PM";
}
return null;
}
}
Добавление пользовательского представления в макет:
//inside AsyncTask
CardActivityMonitoring card = new CardActivityMonitoring(getActivity());
container.addView(card);
Изменение фрагментов экрана:
public void openDashboard() {
Fragment_Tabs main = new Fragment_Tabs();
fm.beginTransaction()
.replace(R.id.mainContainer, main)
.addToBackStack(null)
.commit();
}
//I'm switching between these
public void openSettings() {
Fragment_Settings frag = new Fragment_Settings();
fm.beginTransaction()
.replace(R.id.mainContainer, frag)
.addToBackStack(null)
.commit();
}
Замена FragmentPagerAdapter на FragmentStatePageAdapter устранила бы эту проблему, но по какой-то причине загрузка представления заняла бы 2 секунды.
Я попытался использовать фрагмент вместо пользовательского представления, но та же проблема.
Комментарии:
1. Попробуйте удалить
return null
из вашегоgetItem
2. Это не сработало
3. Что такое контейнер в container.addView (card)?
4. Это линейное описание