Почему popBackStack не возвращается к предыдущему фрагменту с FragmentStatePagerAdapter? - PullRequest
0 голосов
/ 03 октября 2018

У меня есть адаптер пейджера заказов

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;


import java.util.ArrayList;
import java.util.List;

public class OrderPagerAdapter extends FragmentStatePagerAdapter {

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    private FragmentManager fm;

    public OrderPagerAdapter(FragmentManager fm) {
        super(fm);
        this.fm = fm;
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
       fm.beginTransaction().addToBackStack(null).commit();
    }

    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

}

Методы в моем основном классе активности заказов

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_order);
    datasource = new Datasource(this);
    categoryFragment = new CategoryFragment();
    productFragment = new ProductFragment();
    detailFragment = new DetailFragment();
    mViewPager = (ViewPager) findViewById(R.id.pager2);
    mOrderPagerAdapter = new OrderPagerAdapter(getSupportFragmentManager());
    setupViewPager(mViewPager);
}

private void setupViewPager(ViewPager viewPager) {
    mOrderPagerAdapter.addFragment(categoryFragment, "category");
    mOrderPagerAdapter.addFragment(productFragment, "product");
    mOrderPagerAdapter.addFragment(detailFragment, "s");
    viewPager.setAdapter(mOrderPagerAdapter);
    }

public void setViewPager(int fragmentNumber) {
    mViewPager.setCurrentItem(fragmentNumber);
}

Метод Popbackstack

  @Override
    public void onBackPressed() {
       getSupportFragmentManager().popBackStack();
    }

Всякий раз, когда я нажимаю onBackPressedкнопка предыдущий фрагмент не загружается, почему это происходит?Я пробовал несколько вещей, таких как добавление в backstack и затем фиксацияНо ни один из способов не работает.

1 Ответ

0 голосов
/ 03 октября 2018

Вы используете его внутри viewpager?этот метод будет работать для вас, если вы добавили фрагмент с фрагментом в любой Layout / Container.

, если вы хотите вернуться на предыдущую страницу, тогда используйте viewPager.setCurrentItem (viewPager.getCurrentItem () - 1);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...