2011-11-17 3 views
1

TabGroupActivity에는 3 가지 다른 활동이 있습니다. A - Parent, B - Child 1, C - Child 2을 예로 들어 보겠습니다. ---> B B 시작 - -Android 종료 parent 액티비티

A는 --- 시작> C

나는 몇 가지 메시지를 보여줍니다 C에서 경고 대화 상자가 있습니다. 대화 상자에서 확인 버튼을 누르면 활동 A로 돌아가고 싶습니다.

하지만 문제는 다른 활동에서도 활동 C를 열 수 있으며 상위 활동으로 돌아가고 싶다는 것입니다. 그래서 어떤 활동이 열리는 지 상관없이 무언가를 만들어야합니다. C. 나는 이것을 시도했지만 작동하지 않았다 :

Intent intent = new Intent(Synchronization.this,Synchronization.this.getParent().getClass()); 

그러나 그것은 나를 도와주지 않았다. 어떤 제안?

답변

4

두 개의 Activity 방법을 사용해야합니다. startActivityForResult()onActivityResult()

예 : 여기 http://www.vogella.de/articles/AndroidIntent/article.html#explicitintents

로직 간다 :

에 startActivityForResult (activityCIntent, INT_CODE)를 사용하여 ActivityB

시작 ActivityC에서

; DialogButton 확인을 누르면 예 다음 setResult(RESULT_OK,intent);을 사용하여 결과를 설정 한 다음 finish();

그런 다음 ActivityB의 onActivityResult() 방법으로 리디렉션됩니다 제어 호출하는 경우

ActivityC

에서

지금 확인합니다. 이제 onActivityMethod() 안에 result_code==RESULT_OKrequestCode = INT_CODE이 있는지 확인하십시오. 그렇다면 간단히 finish();

+0

방법 둘의 차이점은 무엇으로도 정의 할 필요가? – Shaireen

+1

'startActivityForResult()'는 다른 Explicit Intent를 시작하고 그것이 시작한'Intent'에서 결과를 받기 위해 사용됩니다. 'onActivityResult()'는 시작된 Explicit'Intent'에서 데이터를 가져 오는 역할을합니다. –

0

을 불러 오십시오. 활동 B에서 C 활동을 startActivityForResult()으로 시작하십시오. C 활동을 마치면 B 결과로 돌아갑니다. 결과적으로 인 텐트 오브젝트와 플래그를 전달할 수 있습니다. 당신은 확인 버튼을 사용하여 C 작업을 완료 할 때

이제 다음 setResult()는 다시는 의도로 데이터를 설정할 수있다 B 활동에 데이터를 전달하는과이 의도를 추가해야하는 경우에 RESULT_OK로 결과를 설정 setResult() 메서드를 호출 한 다음 C 작업을 마칩니다.

이제 B에서 요청 코드가 C에서 왔는지 확인한 다음이 활동을 마칩니다. 이 C 활동을 시작할 때 A 활동에 대한 B 활동을 시작할 수도 있습니다.

그리고 당신은 B의 활동에() onActivityResult를 재정의해야하고 당신은 또한 다음 결과에 대한로 B 활동을 시작하면 당신은 활동