AND4011002849
AND4011002849

Reputation: 2001

onBackPressed closing app in fragments using NavigationDrawer

I'm using NavigationDrawer with some fragments, the problem is when I'm in a fragment and hit the back button, it makes the app close, then I have to open it again, put my username and password all over again to use the app, how can I prevent that from happen?

public class NavigationMain extends ActionBarActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
           //...
}
 public void setFragmentList(int posicao) {

        Fragment fragment = null;

        switch (posicao) {

            case 0:
                fragment = new MainFragment();
                break;
            case 1:
                fragment = new MensagensFragment();
                break;
            case 2:
                fragment = new EscolasFragment();
                break;
            case 3:
                fragment = new AutorizadasFragment();
                break;
            case 4:
                fragment = new CadastroFragment();
                break;

            default:
                break;

        }

        if (fragment != null) {
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
            // update selected item and title, then close the drawer
            navigationAdapter.resetarCheck();
            navigationAdapter.setChecked(posicao, true);
            layoutDrawer.closeDrawer(linearDrawer);
        } else {
            // error in creating fragment
            Log.e("MainActivity", "Error in creating fragment");
        }


    }
}

 @Override
    public void onBackPressed() {

        int count = getFragmentManager().getBackStackEntryCount();

        if (count == 0) {
            super.onBackPressed();
            //additional code
        } else {
            getFragmentManager().popBackStack();
        }

    }

Upvotes: 0

Views: 329

Answers (1)

Jayesh Elamgodil
Jayesh Elamgodil

Reputation: 1477

I think you missed to add the fragment transaction in your back stack. Try the following:

fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(null).commit();

Upvotes: 1

Related Questions