在我的应用程序中有4个活动,分别是A,B,C,D
从活动“A”,它是一个闪屏
Intent intent = null;
if(userLogin()) {
intent = new Intent(A.this, B.class);
startActivity(intent);
finish();
}
else {
intent = new Intent(A.this, c.class);
startActivity(intent);
finish();
}
“A”和“B”都调用相同的活动“D”,它是登录或注销屏幕 从活动“D”
String calledActivity = getIntent().getStringExtra("CALLED_ACTIVITY");
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
if(calledActivity.equal("C") && userLogin()) {
Intent intent = new Intent(D.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
else if(calledActivity.equal("B") && !userLogin()) {
Intent intent = new Intent(D.this, C.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
else
finish();
return true;
}
return false;
}
如果用户未登录,则在调用“D”之前,堆栈为“C”
如果我们没有登录则在呼叫“D”之后,堆栈是“C” - > “D”
如果用户登录,则从活动“D”返回后,堆栈为“C” - > “B”
但最初我想,堆栈是“B”
请帮我解决这个问题,谢谢
答案 0 :(得分:2)
使用以下标志启动B:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
这将清除B之前的所有视图,堆栈只包含B。
尽管可以从API 11获得FLAG_ACTIVITY_CLEAR_TASK。
答案 1 :(得分:2)
使用此代码启动新活动。并且所有堆栈都将被清除。
Intent intent = new Intent(getBaseContext(),Registration.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(意向);