Почему фрагменты не сбрасываются? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть 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 уничтожает его, но у меня так не работает. Мне нужна помощь.

...