2012-05-28 2 views
1

없이 나는 어떤 활동안드로이드 역사 스택 분명 하나

A-> Splash Screen 
B-> Home Screen 
C-> a List activity 
D-> a View activty 
E-> a List activity 
F-> a View activty 

Normaly 응용 프로그램 likr 시작이 A -> B

그러면, 사용자는

다음 사용자가에서보기를 선택 목록 활동을 선택 목록 활동.

내 문제는 activty stack을 지우고 있습니다.

모자 포인트 사용자에 D.을 목록 활동 C를 선택 예를 들어 사용자의 경우

(facefook 스타일의 탐색) 활동에 목록 또는보기 활동을 뛰어보기를 선택 활동보다는됩니다 내 응용 프로그램 acitivty E.로 이동할 수 있습니다

활동 E에서 사용자가 뒤로 버튼을 누르면 활동 D로 이동합니다.

활동 B (홈)로 이동하기를 원합니다.

나는 가정 활동없이 활동을 지우고 싶다.

어떻게 할 수 있습니까?

어리 석음을위한 sory.

감사합니다.

+0

D에 전화 할 때 C를 마칠 수 없습니까? 나머지는 동일합니다. 어쩌면 여기 좀보세요 : http://stackoverflow.com/questions/7706106/android-open-activity-and-close-previous-one – MAV

+0

나는 이것을 읽어야한다고 생각한다 : http://developer.android.com/ 가이드/주제/기본/작업 및 백 스택.html 특히 실행 모드에 관한 부분 –

+0

사용자는 D.에서 정상적으로 C로 돌아갈 수 있습니다. 일반적으로 내 런처 활동은 spalsh 화면입니다. 나는 가정 활동으로 돌아가고 싶다. – user999822

답변

2

당신은 지금처럼 뒤로 버튼을 눌러을 가로 챌 수 있습니다

@Override 
public void onBackPressed() { 
    // You want to start B Activity 
    Intent a = new Intent(this, B.class); 

    // But you dont want it on top of E. 
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    // Launching this will now remove every activity on top of B and bring B to front, not! relaunch it. 
    startActivity(a); 
} 

당신은 Android Intent flagsTasks and Back Stack Documentation을 확인 할 수 있습니다.

좋은 하루 되세요!

편집 : 다시 누르면 앱을 종료하려면

:

@Override 
public void onBackPressed() { 
    moveTaskToBack(true); 
} 
+0

OK. 사용자가 활동 E에서 활동 F를 점프한다고 가정하자. 사용자가 f를 다시 누르면. 사용자는 E.로 갈 수 있습니다. – user999822

+0

예. 내 스 니펫을 구현하는 활동은 중요하지 않습니다. 그것은 Backstack에 있다면 B의 모든 액티비티를 죽이고 B를 앞에 가져옵니다. 시도해보십시오. –

+0

확인. 그것은 효과가 있었다. 그래서 ı 활동을 할 때 ı을 닫을 수있는 앱을 닫을 수 있습니다. – user999822

1

사용자가 모든 활동에서 B로 돌아가도록하려는 경우 인 텐트를 호출 할 때 다른 모든 활동에서 finish()으로 전화 할 수 있습니다. 이렇게하면 활동 스택에서 제거됩니다.

또한 당신은 뒤로 버튼 동작을 재정의 할 수 있습니다 :

@Override 
public void onBackPressed() { 
    Intent setIntent = new Intent(Intent.ACTION_MAIN); 
    startActivity(setIntent); 
} 

을하지만 확실히 당신이 원하는 것을 정말합니다. 당신이 사용자 경험에 아주 나쁜 것을하고있는 것처럼 보이기 때문입니다. acitivty 스택 및 태스크에 대해 자세히 읽어보십시오. 뒤로 버튼의 기본 동작을 무시해야합니다.

+0

나는 facebook과 같은 nagivation을 사용한다. http://qph.cf.quoracdn.net/main-qimg-3968c0cb69cb6d7cd27db1b6f0e87019 때문에 사용자가 사람에서 다른 활동을 이동할 수 있습니다. – user999822

+0

하지만이 앱은 뒤로 버튼을 무시하지 않습니다. 나는 그것을 가지고 있으며 그것은 기본 모델을 구현합니다. 내 말은, 사용자가 앞으로 나아갈 때 다른 활동으로 이동할 수 있지만 뒤로 버튼을 누르면 마지막 활동이 스택에 있음을 의미합니다. –

+0

당신의 조언은 무엇입니까? 어떤 해결책이 있습니까? – user999822

1
당신은 태그 안드로이드를 사용할 수 있습니다

: 당신의 활동 요소에 noHistory = "true"로 AndroidManifest.xml에 파일. 이 태그는 활동 스택에 활동을 기록 할 수 없도록합니다.