2013-06-12 2 views
1

의 상단을 청소 활동에 결과를 보내 A, B, C.안드로이드 : 나는 3 개 활동이 가기 backstack

나는 다음과 같은 활동이 작동하는지 원하는

:

에 startActivityForResult B를; B는 C를 시작하거나 A에 결과를 보낼 수 있습니다. C가 B로 돌아가거나 결과를 A로 보낼 수 있습니다.

B가 결과를 A로 보내면 B를 백 스택에서 제거해야합니다. C가 결과를 A로 보내면 B와 C를 백 스택에서 제거해야합니다.

내가이 A가 reusmed해야합니다 (다시 NOT)와 onActivityResult를()가 결과를 처리하기 위해 callled되어야 함을 의미 C.에서 A를 결과를 보낼 수 아니에요 :

이 코드로 tryed 한을하지만, A가 다시 만들어지고 onActivityResult()가 호출되지 않습니다 !!

public class C extends Activity{ 
    sendResultToA(){ 
     Intent i = new Intent(getActivity(), A.class); 
     i.putExtra("dataBean", dataBean); 
     i.putExtra("args", "save"); 
     i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     getActivity().setResult(Activity.RESULT_OK, i); 
     startActivity(i); 
    } 
} 

이 문제를 해결하기위한 아이디어는 무엇입니까? 당신이

+0

원본 코드 게시 위의 코드는 컴파일되지 않습니다. – Blackbelt

답변

5

예는이 문제를 해결할 수있는 감사

From Activity B -> startActivityForResult(ActivityC)

모든 성공이 방법을 수행하여 결과를 설정하면

From Activity A -> startActivityForResult(ActivityB)

.

Intent i = new Intent(); 
i.putExtra("dataBean", dataBean); 
i.putExtra("args", "save"); 
setResult(Activity.RESULT_OK,i); //pass your intent 
finish(); // Call finish to remove ActivityC from the stack 

ActivityB에서 성공한 경우에도 마찬가지입니다. onActivityResultActivity.RESULT_OKActivity.RESULT_CANCELED을 사용하여 결과가 성공 또는 취소되었는지 확인하십시오.

+0

좋아,이 솔루션에서 이미 생각했지만, B (쓸모없는)의 'onActivityResult()'호출로 인해 너무 부드럽지 않다고 생각했습니다. 나는 A로 바로 가기를 원했다. 그러나 나는 지금 막 tryed했고 아주 잘 작동한다 (B는 잠시 나타나지 않는다). 고맙습니다! – user1709805

+0

문제 없음. 해피 코딩 – GoCrazy

관련 문제