2014-10-28 16 views
1

나는 비교적 Android에 익숙하지 않으므로 내 마음이 몹시 괴롭다. 현재 두 번째 활동을 시작하는 활동이 있습니다. 두 번째 활동은 문자열 모음에서 선택하고 하나를 클릭하면 활동이 닫힙니다.활동 의도 완료시 코드 실행

활동은 다음과 같이 호출됩니다 그 활동이 닫힐 때 내가 할 수 있기를 원하는 것은

final Intent intent = new Intent(context, theActivity.class); 
    context.startActivity(intent); 

이 코드를 실행한다. 특히 활동 종료시 일부 데이터를 다시로드하려고합니다. 흐름의 예는 물론, DoStuffLikeReloadingData 즉시 관계없이 완료 여부의, 활동을 시작한 후 실행하는 것입니다, 문제

final Intent intent = new Intent(context, theActivity.class); 
    context.startActivity(intent); 
    DoStuffLikeReloadingData(foo bar); 

될 것이다.

그래서 궁금한 것이 있습니다. 활동이 끝나면 발동 할 수있는 일종의 이벤트가있어서 내가 원하는 것을 할 수 있습니까? 그렇지 않다면 이런 방식으로 호출 된 경우 활동을 모니터링하고 코드가 닫히거나 완료 될 때 코드를 실행할 수있는 방법을 생각할 수 있습니까?

도움이 될 것입니다. 고맙습니다.

답변

2

가 호출하기 위해 호출 할 때 호출 활동 반환 .

public static final int REQUEST_CODE_SOMETHING = 1001; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == REQUEST_CODE_SOMETHING){ 
     // It came from our call 
     if(resultCode == Activity.RESULT_OK){ 
      // The result was successful 
      DoStuffLikeReloadingData(); // you can use the data returned by the Intent do figure out what to do 
     } 
    } 
} 

private void startActivity(){ 
    final Intent intent = new Intent(context, theActivity.class); 
    startActivityForResult(intent, REQUEST_CODE_SOMETHING); 
} 

지금 당신이 활동을 열고 결과에 대한 작업을 수행 할 수 있습니다

다음은 예입니다. 액티비티로 데이터를 전달하거나 액티비티에서 데이터를 전달하려면 intent.putExtra(String key, Parcellable object)을 통해 인 텐트에 엑스트라를 추가하면됩니다.

두 번째 작업에서는 데이터를 다시 전달하기 위해 finish()을 호출하기 전에 setResult(int resultCode, Intent data) 메서드를 호출해야합니다.

+0

굉장! 하나의 질문이 있습니다 : 결과 코드. 나는 그들이 무엇을 고를 지 실제로 모른다. 이 결과 코드가 필요한 것입니까 아니면 무시할 수있는 것입니까? int 결과와 요청 코드가하는 일을 완전히 이해하지 못합니다. –

+0

AH 신경 쓰이지 마! 나는 지금 나는 이해한다고 생각한다. 대단히 감사합니다! –

+0

다행스럽게 도울 수있었습니다! 결과 코드는 다시 전달할 수 있습니다. 예를 들어 뭔가를 클릭하면 setResult (Activity.RESULT_OK, yourIntentDataToPassBack)를 사용하지만 취소 버튼 (예 : 뒤로 버튼)을 클릭하면 setResult (Activity.RESULT_CANCELED)가 표시되고 DoStuffLikeReloading 메서드는 호출되지 않습니다. 결과 코드가 명시 적으로 성공하지 못했습니다. – Guardanis

0

startActivityForResult()을 사용하여 활동을 시작하십시오. 그런 활동의 onActivityResult() 방법, 예, 그 활동의 onActivityResult(int requestCode, int resultCode, Intent data) 방법의 원인이되는 방법 startActivityForResult(Intent, int requestCode);을 사용하여 그 결과를 요청의 의도와 함께 활동을 시작할 수 있습니다 DoStuffLikeReloadingData(foo bar);