1

탭으로 응용 프로그램을 만들고 있습니다. 해당 앱에서 동일한 TabView이 계층 구조의 여러 액티비티에 표시됩니다. 그 때문에 나는 ActivityGroup을 사용했습니다.ActivityGroup의 활동 간 이동 중 StackOverflowError

내 애플리케이션에서는 탭이 포함 된 첫 번째 활동에서 하위 활동으로 이동할 수 있으며 하위 활동의 ​​버튼을 눌러 이전 활동으로 돌아갈 수 있습니다. 이 두 가지 활동을 탐색하는 동안 몇 개의 탐색 후에 StackOverflowError가 발생합니다. 나는 플래그를 시도했다

Intent.FLAG_ACTIVITY_CLEAR_TOP 

그러나 도움이되지 않는다. 또한

finish() 

을 시도하지만 전체 ActivityGroup을 종료합니다. 그런 다음 방법을 시도했습니다.

finishActivityFromChild() 

그러나 여전히 동일한 오류가 발생합니다.

이것은로 탭을 포함하는 첫 번째 활동에서 이동 내 코드의 자식 -

intent = new Intent(context, ChildActivity.class); 
View view = getLocalActivityManager().startActivity("activity2", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); 
setContentView(view); 
finishActivityFromChild(getCurrentActivity(), 0); 

그리고 나는 버튼 -의 클릭에 부모 활동에 돌아 오는을 위해 사용하고있는 동일한 코드

public void onClick(View arg0) { 
    intent = new Intent(context, ParentActivity.class); 
    View view = getLocalActivityManager().startActivity("activity1", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) .getDecorView(); 
setContentView(view); 
finishActivityFromChild(getCurrentActivity(), 0); 
} 

이제이 문제를 해결하기 위해 무엇을해야할지 모르겠습니다. 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.

답변

0

여기 몇 가지 코드가 도움이 될 것 같습니다. 내가 너라면 스택 오버 플로우를 야기 할 수있는 함수가 재귀 적으로 호출되는 것을보기 위해 호출 된 함수의 인쇄물을 시험해 볼 것이다. (일부 중단 점도 트릭을 수행 할 수 있습니다.)

+0

코드를 게시물에 삽입했습니다. 그것을 확인하십시오. – aaaaa

+0

API에 따르면 finishActivityFromChild()는 자식이 작업을 완료 할 때 부모에서 호출되며, 명시 적으로 호출해서는 안됩니다. 순환 호출이 무엇인지 확인하기 위해 인쇄물이나 중단 점을 사용하여 간단하게 시도해 보셨습니까? –