2010-05-03 5 views
1

나는 이것이 답변되었을 것이라 확신하지만 찾을 수 없다는 것을 증명했다. 그러니 제 중복을 용서해주십시오."홈"버튼을 사용하지 않고 현재 활동을 홈 화면으로 종료하는 방법은 무엇입니까?

내가하려고하는 것은 Android 홈 화면으로 돌아가는 "홈"버튼을 에뮬레이션하는 것입니다. 그래서 여기에 문제가 발생합니다 :

  • 나는 3 개의 실행기 활동이 있습니다. 첫 번째 아이콘 (홈 화면 아이콘에 연결된)은 (암호로 보호 된) 구성 활동입니다. 사용자가 사용하지 않습니다 (관리자 만)
  • 앱 위젯을 통해 액세스되는 다른 2 명 중 하나는 설문지 앱입니다. 뒤로 버튼이나 GUI 뒤로 버튼을 사용하여 질문 사이를 돌아볼 수 있습니다. 설문지가 끝나면 주어진 답변을 요약하고 사용자가 홈 화면으로 돌아 가야하는 "마침"버튼을 제공합니다. 내가 자신을 호출 (ItemActivity라고도 함) 하나의 활동을 사용하는 설문 앱

는 (의도를 사용할 때 재귀와 잘?) 질문이 하나에서 다른로 이동 :

Questionnaire.serializeToXML(); 
Intent i = new Intent().setClass(c, ItemActivity.class); 
if(Questionnaire.instance.getCurrentItemNo() == Questionnaire.instance.getAmountOfItems()) { 
    Questionnaire.instance.setCompleted(true); 
} else Questionnaire.instance.nextItem(); 
startActivity(i); 

마지막 화면에는 "참여해 주셔서 감사합니다"와 이전에 설명 된 버튼이 있으며 홈 화면으로 돌아 가야합니다. 하지만 실제로 활동을 올바르게 종료하는 방법을 알지 못합니다. 예 : this.finish();을 사용했지만 이상하게도 "감사합니다"화면이 다시 나타납니다. 그래서 나는 방금 홈 화면으로 뛰어 올라서 어떻게 끝낼 수 있습니까 ??

불편을 끼쳐 드려 죄송합니다. 그것은 무슨 일이 일어나고 있는지 같은 소리
감사합니다,
스테프

답변

8

은 같은 시간에 당신의 활동의 여러 사본이 열려있어 것입니다. 새로운 액티비티 인스턴스를 시작할 때마다 새로 액티비티를 스택에 추가하는 것입니다. 모든 액티비티는 여전히 남아 있습니다. this.finish()에 전화하면 바로 다음에 가장 최근에 열어 본 활동을 보여줍니다. 아마도 "감사합니다"라는 이유는 모르겠지만 아마도 마지막에 만 열렸을 것입니다. 그렇다면 활동이 호출되는 순서를 완전히 따르지는 않습니다.

해결하기 위해 시도 할 수있는 조치 다음 중 하나입니다 : 1) 다른 질문에 대한 새로운 활동을 시작한 후 매번 finish()을 사용하십시오 (한 번에 하나의 질문 활동 만 열리도록) 또는 2) 의도 플래그 CLEAR_TOP을 사용할 수 있는지 확인하십시오. 그러면 대상 활동이 시작되고 스택에서 그 위에 있던 모든 것을 제거합니다. 예를 들어 A, B, C, C, C, C, C (각 질문에 대해 기타 등등) 활동이있는 경우 CLEAR_TOP을 사용하여 A를 시작하면 B와 C의 모든 인스턴스가 중지됩니다. 사용자가 설문지를 시작할 때 처음 보는 화면을 변경합니다. 그러면 기본적으로 설문지를 시작하는 버튼이있는 '환영 메시지'가 표시됩니다. 그러나 인 텐트와 함께 번들 된 특정 값으로 시작되면 "감사합니다"라는 메시지가 표시됩니다.

그런 다음 사용자가 finish() 활동 A에 로그인하면 사용자는 앱을 시작하기 전의 위치 (사용자가 appwidget로 시작한 경우 홈 화면 일 가능성이 있음)로 돌아갑니다.

+0

감사합니다. 나는 대답을 읽은 후에 설문 조사를하는 것이 완전히 잘못된 접근법을 따른다면 궁금합니다 ... – stfn

관련 문제