How to pop fragment off backstack
You can pop the fragment by name. While adding fragments to the back stack, just give them a name.
fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");
Then in Fragment_C, pop the back stack using the name ie.. fragB
and include POP_BACK_STACK_INCLUSIVE
someButtonInC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getActivity()
.getSupportFragmentManager();
fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
});
Fragment does not pop out from backstack?
Since you are not adding fragC to the backstack when backpressed wont pop the stored transaction it is not removed.instead here you have to remove the fragment by overriding backpress.Overiride backpress and check for the fragC and remove it and then call the pospstack to pop back the stored transaction.
Also store the instance of fragment as global to check if the fragment if fragC.
private Fragment mFragment;
Inside you method store the instance
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
Fragment fragment = getSupportFragmentManager().findFragmentByTag(mFragment.getClass().getName());
if (fragment != null && fragment.getClass().getName().equalsIgnoreCase(CFragment.class.getName())) {
getSupportFragmentManager().beginTransaction().remove(mFragment).commit();
}
getSupportFragmentManager().popBackStackImmediate();
} else {
super.onBackPressed();
}
}
How can I pop the back stack from a FragmentActivity to the previous activity?
It sounds like you just need to call finish()
on the QuizActivity
In the fragment with your button just use activity.finish()
How to listen to Fragment Backstack Pop only?
You can keep a count of the backstack entries and compare it everytime your onBackStackChanged()
is called.
private void setupChildFragmentPopListener() {
getChildFragmentManager().addOnBackStackChangedListener(
new FragmentManager.OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
int backCount = getChildFragmentManager().getBackStackEntryCount();
}
});
}
How can I pop fragment from backstack without resuming it?
It's architectural question.
1)Suppose we have 2 controllers (fragments/activities): controller A and controller B.
Both of them connected to one instance of some Model (you may use binding with service, Singleton pattern or init model in Application-heir class and make a getter to it).
When something interesting happens in controller B, he notifies model about it and then model calls controllerA.finish() / controllerA.remove().
Of course, I always try to implement this solution as nicely as possible, but there is a main idea.
2)In another circumstances, I call finish() immediately after startActivity(intent);
3)Also I may write: startActivityForResult(intent, requestCode) and after finishing second activity method onActivityResult(requestCode, responseCode, intent) is called - if requestCode's are equal, I finish the activity.
PopBackStack but keep the first fragment in android
E.g. you can do following:
- add fragA without adding it to backStack. So it always be in
activity, and won't react on back button. - when you open fragD you should clear fragment BackStack. So when you press back button from D frag you go back to A.
P.S. There are other ways how to do what you want. It depends...
Clear back stack using fragments
I posted something similar here
From Joachim's answer, from Dianne Hackborn:
http://groups.google.com/group/android-developers/browse_thread/thread/d2a5c203dad6ec42
I ended up just using:
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
But could equally have used something like:
((AppCompatActivity)getContext()).getSupportFragmentManager().popBackStack(String name, FragmentManager.POP_BACK_STACK_INCLUSIVE)
Which will pop all states up to the named one. You can then just replace the fragment with what you want
Remove Fragments from Backstack using Navigation Component
popBackStack(R.id.firstFragment, true)
pops everything up to and inclusive to the first fragment. You've popped every fragment off the back stack. Seems like you want to use false
, not true
if you just want to return to the first fragment.
Related Topics
Android. Scrolling 2 Listviews Together
Android Exporting to CSV and Sending as Email Attachment
Load Large Images with Picasso and Custom Transform Object
Enable and Disable Auto Rotate Programmatically
Android Gradle Build Error:(9, 0) Gradle Dsl Method Not Found: 'Compile()'
Installation Error: Install_Failed_Older_Sdk
Check If User Is Authenticated for the First Time in Firebase Google Authentication in Android
How to Make My Own Custom Dialer in an Android Phone
Android Youtubeplayer with Unauthorized Overlay on Top of Player
Material Design, Appcompat, and Backwards Compatibility
Android: Running a Background Task Using Alarmmanager
Video Streaming Using Rtsp: Android
Programmatically Enter Secret Code Like *#*#4636#*#* on Android
Anr Keydispatchingtimedout Error
Android Replace the Current Fragment with Another Fragment
How to Draw Outside the Bounds of an Android Canvas