Okay so I'm kind of stumped on what to do with this. So I have the MainActivity, and from there an Activity can be launched to DegreePlanActivity, and from there another Activity can be launched to EditDegreePlan. I've got EditDegreePlan set to noHistory in the AndroidManifest. The problem is after they save the EditDegreePlan it launches an Activity to DegreePlan. So if the user presses Back they have to press it twice to get to MainActivity again. I want to get rid of that so they only have to press it once. I'm stumped on how to do this though.
If I set DegreePlanActivity to noHistory then they couldn't press Back to it while in EditDegreePlan.
I've tried overriding onBackPressed method and launching an intent to MainActivity. The problem then is that they have to press Back multiple times to exit the app then.
What should I do?
I would suggest that you use
startActivityForResult()
, instead of simplystartActivity()
, when you launch the EditDegreePlan-Activity, as described in the Android tutorials.In the EditDegreePlan-Activity you then call
If you don't expect any data from the EditDegreePlan-Activity, then you don't necessarily have to implement the
onActivityResult
.simple solution for API >= 15 to API 23 user activity name in intent.
You can call finish before you start your new activity. This will unload the current activity, so when you press back button on then next activity, the first activity will not be there anymore.
Here is your flow:
MainActivity --> DegreePlanActivty --> EditDegreePlan--> DegreePlan --> MainActivty
Override these method inside your "DegreePlan"
It seems, that you will get the desired behavior if you do not specify any flags at all. The back button would just do the right thing. To get an activity closed from within your code use the
finish()
method it has the same effect as the user pressing the back button. So you will automatically arrive at DegreePlan when you finish the EditDegreePlan, no need to call anyIntents
either.FLAG_ACTIVITY_CLEAR_TOP clears your Activity stack , you can use the code below:
Remember that this flag clears just Intermediate Activities , for example if you have A,B,C in your
Back Stack
then going from C Activity to D with this flag this does not clearBack Stack
and the Stack would be A,B,C,D but if you go from Activity D to Activity A with this flag , B,C,D Activities will pop up from the stack and you will have just A in the Back Stack .