As the title says, Why intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
or intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
won't work?
I have 3 Activities let us say A, B and C.
When I am trying to launch Activity A from C with code:
Intent i = new Intent(this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
It simply starts Activity A but doesn't clear the top.! -_-
I have also tried using setFlags()
.
I read different questions on SO about this problem, but I couldn't find the right answer. >_<
Somebody please help!
Edit
Code for onBackPressed() in activity 'A' as requested by @codeMagic.
@Override
public void onBackPressed(){
if(wvLogin.canGoBack())
wvLogin.goBack();
else
super.onBackPressed();
}
From the documentation for FLAG_ACTIVITY_CLEAR_TOP:
As you added in your comment, the activity A has been finished before calling B, so this situation doesn't apply. A new instance of activity A will be launched instead.
As I see it, you have two options here:
1) Use the
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
flags. This will start activity A as the root of the stack. It works, but any other activities in the stack will be lost. Assuming A was the first activity (or at least, that you are not interested in any previous activities in the task stack) then it doesn't matter. Note: CLEAR_TASK requires API Level 11.2) Another possible solution (in case the previous assumption is not true) would be to not use intent flags at all:
startActivityForResult()
.B.afterActivityResult()
, finish B and launch A.You used a diferrent intent: use the one you initialized:
solution:
You could either put a noHistory true to the Activity A in the manifest
You are missing the
Intent.FLAG_ACTIVITY_SINGLE_TOP
flagTry this: