더 나은 방법은 이전 활동 스택을 취소하는 것입니다, C는 제거 활동 스택 및 활동 A와 B의 새로운 최상위입니다.
Intent intent = new Intent(getApplicationContext(), ActivityC.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
편집 :
나는 개인적으로 내 자신의 애플 리케이션 에 따라 (조금 복잡하게 들릴 수도 있지만, 작동) 또 다른 방법 : 사용하여 A에서
시작 B 특정 RequestCode.
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivityForResult(intent, LOGIN_INTENT);
로그인 로그인에 성공한 활동 B의 사용자 B 마무리에서 설정 같은 ResultCode() B.
onSuccessfulLoginCallback() {
Intent resIntent = new Intent();
setResult(LOGIN_OK, resIntent);
finish();
}
제어 지금 onActivityResult를에서, 이제 다시 활동 A로 간다() A의 RequestCode와 ResponseCode를 확인하십시오. 서로 일치하면 때, 다음,
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == LOGIN_INTENT) {
if(resultCode == LOGIN_OK){
Intent homeIntent = new Intent(ActivityA.this, ActivityC.class);
startActivity(homeIntent);
finish();
}
back..i의 클릭에, 작동하지 않는이 하나가 여전히 활동 b와 c – user3278732
오,이 경우에, 당신은 할 수 있습니다 참조 'intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); – Swayam
이 아이디어는 좋지만, 불행히도 제공하신 코드는 그렇게하지 않습니다. Whan 당신은'FLAG_ACTIVITY_CLEAR_TOP'으로'ActivityC'를 시작합니다 ** 이것은 ** 활동 스택을 지울 것입니다 ** 다시 C 활동으로 돌아갑니다 **. 그러나 액티비티 C **가 액티비티 스택에 없기 때문에 단순히 액티비티 C를 스택 **의 다른 액티비티 위에 배치합니다. FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_NEW_TASK를 추가해도 도움이되지 않습니다. 죄송합니다. –