androidandroid-fragmentsnavigation-drawerandroid-fragmentactivityup-navigation

Up Navigation in fragment


I am creating one android app in which i want to implement up navigation. i want to navigate to previous fragment through up navigation in actionbar. application also contain navigation drawer. i have implement following code but it does'n work. thanks in advance. main activity code as below.

public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}

switch(item.getItemId())
{
case android.R.id.home:
FragmentManager fm=getFragmentManager();
if(fm.getBackStackEntryCount()>0)
{
fm.popBackStack();
}
else
{
onBackPressed();
}
return true;
default:
super.onOptionsItemSelected(item);
}
return super.onOptionsItemSelected(item);
}

Fragment code as below.

@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
MainActivity.mDrawerLayout.setVisibility(View.INVISIBLE);
MainActivity.mDrawerToggle.setDrawerIndicatorEnabled(false);
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
getActivity().getActionBar().setHomeButtonEnabled(true);
}

Solution

  • You can try this. Add your code in onbackPressed. if backStackCount is greater than 0 then it will call popbackStack otherwise finish() mwthod will be called.

    @Override
        public void onBackPressed() {
            // TODO Auto-generated method stub
    //      super.onBackPressed();
            if(getSupportFragmentManager().getBackStackEntryCount()>0)
            {
                getSupportFragmentManager().popBackStack();
            }
            else
            {
                finish();
            }
    
        }