【问题标题】:Why doesn't popBackStack revert to previous fragment with FragmentStatePagerAdapter?为什么 popBackStack 不使用 FragmentStatePagerAdapter 恢复到上一个​​片段?
【发布时间】:2018-10-03 09:54:32
【问题描述】:

我有一个订单寻呼机适配器

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 按钮时,前一个片段没有加载,为什么会发生这种情况?我尝试了多种方法,例如添加到后台堆栈然后提交。但这些方法似乎都不起作用。

【问题讨论】:

  • 你在viewpager中使用它?如果您在任何布局中添加了带有 fragmentTransaction 的片段,此方法将适用于您。
  • 是的,我正在使用 viewpager。但该方法没有弹出前一个片段
  • 您需要对不在 ViewPager 上的任何容器使用 FragmentTransaction
  • 如果你想回到上一页然后使用 viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
  • 是的,你可以这样做@RahulKhurana

标签: android android-fragments


【解决方案1】:

你在 viewpager 中使用它?如果您在任何布局/容器中添加了带有 fragmentTransaction 的片段,此方法将适用于您。

如果您想返回上一页,请使用 viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    相关资源
    最近更新 更多