I use the viewpager to scroll between fragments and would like the back button to go to the previously viewed fragment, and not to end the action. Sorry if this is a duplicate of this question , however I did not find the answer very useful. Obviously, onBackPressed needs to be redefined, but I don’t know how to get and display the correct fragment. I assume I should use a fragmenter backstack, but getSupportFragmentManager().getBackStackEntryCount() always returns 0. Do I need to manually add fragments to the backstack using FragmentTransaction.addToBackStack() ? If so, where would I add this to my adapter?
Here is the code for my activity,
public class PagerActivity extends FragmentActivity { ArrayList<Sale> sales; MyAdapter mAdapter; ViewPager mPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent it = getIntent(); this.sales = (ArrayList<Sale>) it.getExtras().get("sales"); int position = it.getExtras().getInt("position"); ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); setContentView(R.layout.fragment_pager); mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setCurrentItem(position); } public class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public int getCount() { return sales.size(); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); } @Override public Fragment getItem(int position) { SalesThumbFragment frag = new SalesThumbFragment(); return frag.newInstance(sales.get(position)); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) {
source share