1

My app flow is:

Activity A -> Activity B (this activity has buttons which on click open fragments)

I want that when I am on Activity B's fragments, on back pressed the flow should be to Activity B and when I am on Activity B then on back pressed app should exit.

I am currently using:

@Override
public void onBackPressed() {

    if(getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStackImmediate();
    }

    else {
        super.onBackPressed();
    }
}

It's working fine when back pressed on Activity B's fragments, but it's going to Activity A when pressed back from Activity B(and that too for some reason nothing is being displayed in Activity A).

EDIT

My code for calling fragment:

faqsBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mLoginSubmit.setVisibility(View.GONE);
            Bundle b1 = new Bundle();
            b1.putString("ComingFrom","Login");
            android.support.v4.app.Fragment faqsFragment = new fragment11Faqs();
            faqsFragment.setArguments(b1);
            android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.framelayoutfaqs,faqsFragment);
            transaction.addToBackStack(faqsFragment.toString());
            transaction.commit();
        }
    });
Dpka
  • 246
  • 1
  • 3
  • 13
  • Possible duplicate of [Exit android app on back pressed](https://stackoverflow.com/questions/21253303/exit-android-app-on-back-pressed) – Stuti Verma Jun 20 '18 at 18:03

1 Answers1

2

You should call finish() when you call Activity B right after declaring its intent from ActivityA

Like this

Intent intent=new Intent(ActivityA.this,ActivityB.class);
startActivity(intent);
finish();

And you code for backstack is fine in activity b just add finish() after super.onBackPressed();

@Override
public void onBackPressed() {

    if(getFragmentManager().getBackStackEntryCount() > 0) {
        getFragmentManager().popBackStackImmediate();
    }

    else {
        super.onBackPressed();
        finish();
    }
} 

Here is how to add fragment to backstack

 Fragment cameraEditing = new Editing(); FragmentManager
 fragmentManager = getFragmentManager(); FragmentTransaction 
fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.replace(R.id.cameraLayout, 
cameraEditing,"cameraEditing"); 
fragmentTransaction.addToBackStack("cameraEditing");
 fragmentTransaction.commit();
Quick learner
  • 10,632
  • 4
  • 45
  • 55