我有一个定购传呼机适配器
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,然后再提交。但是似乎没有一种方法可行。
答案 0 :(得分:0)
您在viewpager中使用它吗?如果您在任何布局/容器中添加了带有fragmentTransaction的片段,则此方法将为您工作。
如果您想返回上一页,请使用viewPager.setCurrentItem(viewPager.getCurrentItem()-1);