2012-01-10 6 views
3

내가 가진 3 활동 A, B 및 C
흐름은 다음과 같습니다 활동 A가 B를 호출, B 전화 C. (A -> B -> C) 이제
내가에서 오전 활동 C와 B를 포함시키지 않고 어떤 결과를 활동 A로 되 돌리고 싶습니다. 시나리오는 활동 B가 A에 의해서만 호출되어야합니다 (C에서 뒤로 버튼을 누르면 B가 호출되지 않고 활동 A가 앞당겨집니다). 어느 누구도이 상황을 어떻게 처리해야하는지 알려줍니다.안드로이드 활동 호출 및 반환 결과

업데이트 :

내가 B.

에서 C를 호출하고 동일한 방법으로

Intent intent = new Intent(this, B.class); 
      startActivityForResult(intent, 0); 

에서 활동 B를 호출하고 난 위에에서

타고 있어요 onActivityResult 방법

답변

2
  • start ActivityB as ActivityA에서 StartActivityForResult.
  • onCreate() 메서드에서 ActivityB를 ActivityB의 StartActivityForResult으로 시작합니다. Don't finish ActivityB.
  • ActivityC에서 작업 완료시 set the result.
  • ActivityB에서 결과가 OnActivityResult() 인 경우 결과를 ActivityA로 설정하고 ActivityB를 완료합니다.
  • ActivityC에서 onBackPressed()을 무시하고 널 (null) 결과를 설정하고 마침 ActivityC
1

startActivity 후 call finish()를 호출하여 B 작업의 C 호출

+0

을하지만 어떻게 활동 A로 결과를 반환 –

1

이 유 backBtn 이벤트에 Acvtivity에서 C

Intent i=new Intent(getApplicationContext(), A.class); 
i.putExtra("id", id); 
startActivity(); 

을 간단한 방법입니다

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // do something on back. 
     Intent i=new Intent(getApplicationContext(), A.class); 
     i.putExtra("id", id); 
     startActivity(); 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
1

난 당신이 Activity B override onActivityResult() and put finish()에서 다음 Activity C from B by startActivityForResult()과 전화를 생각; 또한 Activity A start Activity B by startActivityForResult()에서 다시 작성하지 않고 활동 A로 전달합니다.