특정 액티비티와 같은 현재 액티비티의 애플리케이션 스택에서 이전 액티비티를 완료하는 방법 (모든 레벨에서 즉각적인 상위가 아닙니다.)이 이전 액티비티를 무효화하고 싶습니까? 어떤 도움이 필요합니까? 감사.스택의 이전 활동을 현재 활동으로 끝내시겠습니까?
답변
이 정적 변수를 사용하여 가능하다. 부울 변수 activity_name_dirty = false를 사용하는 것과 같습니다. 해당 활동을 무효로하는 조건이 발생하는 즉시이를 사실로 표시하십시오. 따라서이 활동을 호출 할 때 나중에 언제든지 activity_name_dirty 상태를 확인해야합니다. 그런 다음 활동 플래그를 사용하여 Activity Fundamentals에 설명 된대로 새로운 순간을 만들 수 있습니다.
인 텐트 플래그 FLAG_ACTIVITY_CLEAR_TOP
을 사용하여 스택에서 활동을 재시작하고 그 위에 있던 모든 것을 지울 수 있습니다. 이것은 당신이 요구하는 것이 아니지만 도움이 될 수 있습니다. 이렇게하려면
는 사용
Intent intent = new Intent(context, classToBeStarted.class);
intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
이 답변은 늦을 수 있습니다.하지만 누군가가 이와 같은 것을 찾고있는 경우에 대비하여 게시 할 예정입니다. 내가 무슨 짓을
내가이 일 이후 모든 활동에서 지금
h = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch(msg.what) {
case 0:
finish();
break;
}
}
};
을 가지고, 내가
ACTIVITY_A
내
onCreate()
방법
ACTIVITY_A
에서
public static Handler h;
과의 정적 핸들러를 선언 등이다 ACTIVITY_B
또는 ACTIVITY_C
으로 전화 할 수 있습니다.
ACTIVITY_A.h.sendEmptyMessage(0);
을 ACTIVITY_A
및 ta-da! ACTIVITY_A
은 다른 활동으로 끝났습니다.
이 그래서 피곤하지만 좀 더 깊이 테스트 (나는 나중에 참조 할 수 있도록 여기두고)을 한 후 작동하지 않았다 : android:clearTaskOnLaunch
는, 예를 들어, 그 사람은 집에서 활동 P 가정 해 보겠습니다 시작화면이 나타나고 거기에서 Q 활동으로 이동합니다. 사용자는 다음으로 홈을 누른 다음 활동 P로 돌아갑니다. 일반적으로 사용자는 P 활동에서 마지막으로 수행 한 활동 Q를 볼 수 있습니다. 그러나 P가이 플래그를 "true"로 설정하면 사용자가 홈을 누르고 작업이 백그라운드로 이동하면 그 위에있는 모든 활동 (이 경우 Q)이 제거됩니다. 따라서 사용자는 작업으로 돌아갈 때 P 만 볼 수 있습니다.
https://developer.android.com/guide/topics/manifest/activity-element.html
UPDATE 이
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
위대한 작품 - 제 경우에도 불구하고'intent.addFlags (..)' – gnB
- 1. Android 다른 모든 활동을 끝내시겠습니까?
- 2. 제 3 자의 의도를 시작하기 전에 활동을 끝내시겠습니까?
- 3. 스택의 루트 활동으로 특정 활동 만들기
- 4. 현재 활동을 어둡게하는 방법?
- 5. 활동을 다시 시작하지 않고 활동으로 다시 시작
- 6. 이전 활동을 재사용 하시겠습니까?
- 7. 새 활동의 데이터를 이전 활동으로 전달 하시겠습니까?
- 8. Android : finish()를 호출하지 않고 이전 활동으로 돌아 가기
- 9. 한 활동에서 이전 활동으로 문자열 전달
- 10. 현재 활동을 모두 지우고 백그라운드에서 새로운 활동을 시작 하시겠습니까?
- 11. 마지막 활동으로 돌아 가기
- 12. ANDROID : 스택에서 새 활동으로 기존 활동을 시작하는 방법
- 13. 이전 활동으로 이동하는 코드를 작성하는 방법이 있습니까?
- 14. 이전 활동으로 돌아갈 때 아이콘이있는 결과
- 15. 한 활동에서 이전 활동으로 값을 전달하는 방법
- 16. AsyncTask onPostExecute는 이전 활동으로 돌아 가지 않습니다.
- 17. 다른 활동이 충돌하면 Android가 이전 활동으로 돌아갑니다.
- 18. OpenGL에서 행렬 스택의 현재 크기를 얻으려면 어떻게해야합니까?
- 19. 스레드 스택의 현재 상태를 확인하는 방법
- 20. 현재 화면 활동을 얻는 방법?
- 21. 서비스가 아닌 현재 전경 활동을 어떻게 알 수 있습니까?
- 22. 이미 실행중인 활동을 통해 실행중인 활동으로 전환하는 방법
- 23. 안드로이드에서 다른 활동으로 활동을 생성 할 수 있습니까?
- 24. 다른 활동으로 전환 할 때 백그라운드에서 계속 활동을 유지 하시겠습니까?
- 25. 액티비티 스택의 액티비티 교체하기
- 26. 스택의 투명보기
- 27. Java 활동으로 돌아가거나 시작하기, 기본적으로
- 28. XSL (T) 현재/다음/이전
- 29. 스택의 생성자
- 30. Xbox Live 회원의 현재 활동을 긁어 모으기
저도 같은 문제가있어 작동했다. 먼저 활동 A, B, C를 시작합니다. 그런 다음 Intent.FLAG_ACTIVITY_CLEAR_TOP을 설정하여 활동 D를 시작합니다. 그러면 D가 스택의 유일한 활동이됩니다. 어쨌든 이것은 사실이 아닙니다. 뒤로 버튼을 누르면 이전 활동으로 돌아갑니다. – neu242
아니, CLEAR_TOP의 작동 방식이 아닙니다. CLEAR_TOP은 스택에서 대상 활동의 '위'에있는 모든 것을 제거합니다. 그래서 A, B, C가 있고 CLEAR_TOP으로 A를 다시 시작하면 B와 C가 죽게됩니다.D를 시작하거나 C를 다시 시작하면 아무 일도 일어나지 않습니다. 그래서 그가 요구 한 것이 아니지만 유용 할 수 있다고 말한 것입니다. 예를 들어 루트 활동이 될 주 메뉴 화면이있는 경우 사용자가 다른 모든 것을 죽일 때마다 CLEAR_TOP을 사용하여 다시 시작할 수 있습니다. –
그래서 내가 원하는 것을 얻으려면 다음과 같이 대신 할 수 있습니다. 1) A, B, C를 시작하십시오. 2) C를 사용하여 CLEAR_TOP과 D를 식별하는 데이터를 시작하십시오. 3) A에서 finish()를 호출하고 D 더러운 해킹 같은 느낌이지만 작동해야합니다 ..? – neu242