У меня есть Tabbed Activity
с двумя Fragments
, и он должен уничтожить фрагмент, который не отображается, верно?
это мой Activity
:
public class MainActivity extends AppCompatActivity {
private SectionPageAdapter sectionPageAdapter;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sectionPageAdapter = new SectionPageAdapter(getSupportFragmentManager());
viewPager = findViewById(R.id.view_pager);
setupViewPager(viewPager);
TabLayout tabLayout = findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager){
SectionPageAdapter adapter = new SectionPageAdapter(getSupportFragmentManager());
adapter.addFragment(new PedidosFragment(), "Pedidos");
adapter.addFragment(new RotaFragment(), "Rota");
viewPager.setAdapter(adapter);
}
}
Вот один из фрагментов:
public class PedidosFragment extends Fragment {
EditText txt;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_pedidos,container, false);
txt = view.findViewById(R.id.editText);
return view;
}
}
А вот и Адаптер страницы:
public class SectionPagerAdapter extends FragmentStatePagerAdapter {
final List<Fragment> fragmentList = new ArrayList<>();
final List<String> fragmentTitles = new ArrayList<>();
public void addFragment(Fragment fragment, String title){
fragmentList.add(fragment);
fragmentTitles.add(title);
}
public SectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Nullable
@Override
public CharSequence getPageTitle(int i) {
return fragmentTitles.get(i);
}
@Override
public Fragment getItem(int i) {
return fragmentList.get(i);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
Я читал, что FragmentPagerAdapter
сохраняет состояние фрагмента и FragmentStatePagerAdapter
уничтожает его, но у меня так не работает.
Мне нужна помощь.