Start new Activity and finish current one in Android? [duplicate]
Asked Answered
B

3

82

Currently I'm starting a new Activity and calling finish on a current one.

Is there any flag that can be passed to Intent that enables finishing current Activity without a need to call finish manually from code?

Brasilein answered 3/7, 2012 at 9:37 Comment(0)
B
136

You can use finish() method or you can use:

android:noHistory="true"

And then there is no need to call finish() anymore.

<activity android:name=".ClassName" android:noHistory="true" ... />
Booma answered 3/7, 2012 at 9:41 Comment(5)
are you sure this does what you say? from android docs: FLAG_ACTIVITY_NO_HISTORY If set, the new activity is not kept in the history stack. As soon as the user navigates away from it, the activity is finished. This may also be set with the noHistory attribute.Incisor
android:noHistory="true" is NOT the same as finish()!Strainer
Just use the finish(), don't use noHistoryThurman
this is perfect, thank you!Unapproachable
I have noticed 'noHistory' prevents the app from storing the screen entirely, meaning when the user minimises the app and re-opens it flings the user back to the starting activity. Finish() is better because the open screen is still cached for minimisationJacie
G
100

Use finish like this:

Intent i = new Intent(Main_Menu.this, NextActivity.class);
finish();  //Kill the activity from which you will go to next activity 
startActivity(i);

FLAG_ACTIVITY_NO_HISTORY you can use in case for the activity you want to finish. For exampe you are going from A-->B--C. You want to finish activity B when you go from B-->C so when you go from A-->B you can use this flag. When you go to some other activity this activity will be automatically finished.

To learn more on using Intent.FLAG_ACTIVITY_NO_HISTORY read: http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NO_HISTORY

Gunthar answered 3/7, 2012 at 9:53 Comment(5)
FLAG_ACTIVITY_NO_HISTORY does the opposite. New activity is not saved in history, whereas I want previous Activity being finished.Brasilein
doesn't finish() suppose to kill the current activity ? how do you expect it to reach the next line startActivity(i) ? Looks dangerous and unexpected to meCarycaryatid
@Carycaryatid Calls are async startActivity() will get called.Portugal
@Portugal could you explain this "Calls are async startActivity() will get called." more precisely?Strainer
you can refer this answer #10848026Gunthar
I
6

FLAG_ACTIVITY_NO_HISTORY when starting the activity you wish to finish after the user goes to another one.

http://developer.android.com/reference/android/content/Intent.html#FLAG%5FACTIVITY%5FNO%5FHISTORY

Incisor answered 3/7, 2012 at 9:45 Comment(2)
FLAG_ACTIVITY_NO_HISTORY does the opposite. New activity is not saved in history, whereas I want previous Activity being finished.Brasilein
Yes, that is what I said. Activity A you wish to finish, Activity B that is accessed from activity A. Start the activity A with the flag I mention so when the user roams away from activity a to activity B the activity A is finished. As I mentioned in the answer: "...when starting the activity you wish to finish...". It is the same answer as the confirmed one.Incisor

© 2022 - 2024 — McMap. All rights reserved.