【发布时间】: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