Я довольно новичок в Android.
Это мой сценарий: у меня есть простое приложение с 3 вкладками.В каждой вкладке я хочу использовать один или несколько фрагментов.Это ситуация:
- Вкладка 1:
- Вкладка 2:
- Фрагмент B
- Фрагмент C
- Фрагмент D
- Вкладка 3:
В "Tab 1" у меня нет проблем.Все работает довольно хорошо.Проблемы возникают, когда мне нужно перейти в «Tab 2» и «Tab 3».
В Таблице 2 мне нужно распространить некоторые параметры от «Фрагмента B» до «Фрагмента C» и от «Фрагмента C» до «Фрагмента D».
Тогда может случиться так, что, когда пользователь нажимает на какую-то кнопку в «Фрагменте D», я должен перейти к «Tab 3» и перенести некоторые параметры из «Фрагмента D» в «Фрагмент E».
В моей основной деятельности по обработке вкладок я использую следующие компоненты:
- android.support.design.widget.TabLayout
- android.support.v4.view.ViewPager
- android.support.v4.app.FragmentStatePagerAdapter (я создал собственный класс)
- android.support.design.widget.TabLayout.OnTabSelectedListener (я создал собственный класс)
Мое очень простое расширение FragmentStatePagerAdapter
:
public class MyOwnPageAdapter extends FragmentStatePagerAdapter {
private int numeroTab;
public MyOwnPageAdapter(FragmentManager fm, int numeroTab) {
super(fm);
this.numeroTab = numeroTab;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new FragmentA() ;
case 1:
return new FragmentB() ;
case 2:
return new FragmentC() ;
default:
return null;
}
}
@Override
public int getCount() {
return numeroTab;
}
}
Мое очень простое расширение TabLayout.OnTabSelectedListener
:
public class TabSelectedListener implements TabLayout.OnTabSelectedListener {
private ViewPager viewPager;
public TabSelectedListener(ViewPager viewPager){
this.viewPager = viewPager;
}
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
}
Я умею переключать фрагментывнутри вкладок, которые находятся на вкладке 2, я могу переключиться с фрагмента B на фрагмент C и так далее.У меня проблемы с передачей параметров между фрагментами и, прежде всего, из фрагмента D на вкладке 2 в фрагмент E на вкладке 3
В моей реализации фрагментов, используя android.support.v4.app.FragmentManager
, я могу добавлять и удалять представления (например, фрагменты)), выполнив что-то вроде этого:
mFragmentManager.beginTransaction().add(rootView.getId(),mListaEdificiFragment, "BUILDS").addToBackStack(null).commit();
Проблема заключается в распространении параметра, так как FragmentStatePagerAdapter
, кажется, кэширует представления, случается, что вызывается конструктор фрагмента, но onCreate
и onCreateView
больше не вызывается, поэтому я не могу обработать распространяемые параметры.
Есть ли какое-либо решение для этого?Или я просто ошибаюсь в своем шаблоне навигации?Я хотел бы избежать сворачивания фрагмента B, фрагмента C и фрагмента D в одном «большом представлении», где можно спрятать какой-то раздел (то же самое для фрагмента E и фрагмента F)
Любое предложение более чем приветствуется
Анджело