main액티비티에서 sub액티비티를 호출하여 넘어갔다가, 다시 main 액티비티로 돌아올때 사용되는 기본 메소드.
1. startActivityForResult()로 Activity 호출하기
기존에 startActivity()로 호출하던 것을 startActivityForResult()로 호출을 하면서 인수를 하나 추가. 이 인수는 0보다 크거나 같은 integer 값으로 추후 onActivityResult() 메소드에도 동일한 값이 전달되며 이를 통해 하나의 onActivityResult() 메소드에서 (만약 있다면) 여러 개의 startActivityForResult()를 구분할 수 있습니다.
private int REQUEST_TEST = 1;
...
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivityForResult(intent, REQUEST_TEST);
// startActivityForResult(intent); } });
2. 호출된 Activity에서 setResult()로 결과 돌려주기
호출된 Activity에서 setResult() 메소드로 결과를 저장할 수 있음. 성공인 경우는 RESULT_OK, 실패인 경우 RESULT_CANCEL을 설정.
이후 finish() 메소드로 Activity를 종료.
Intent intent = new Intent();
intent.putExtra("result", "some value");
setResult(RESULT_OK, intent);
finish();
3. onActivityResult()에서 결과 확인하기
onActivityResult() 메소드를 통해 호출된 Activity에서 저장한 결과를 돌려줌. 이 때 requestCode는 처음 startActivityForResult()의 두번째 인수 값이며, resultCode는 호출된 Activity에서 설정한 성공(RESULT_OK)/실패(RESULT_CANCEL) 값. 이를 통해 어떤 호출 (REQUST_TEST) 이었는지와 결과가 어떠한지 (RESULT_OK)를 알 수 있으므로 그에 맞는 동작을 진행할 수 있음. .
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_TEST) {
if (resultCode == RESULT_OK) {
Toast.makeText(MainActivity.this, "Result: " + data.getStringExtra("result"), Toast.LENGTH_SHORT).show();
} else { // RESULT_CANCEL
Toast.makeText(MainActivity.this, "Failed", Toast.LENGTH_SHORT).show(); }}
//else if (requestCode == REQUEST_ANOTHER) {
... } }
참고 : zeany.net/54
'Android' 카테고리의 다른 글
[Android] Byte <-> Srting 변환 (0) | 2021.03.18 |
---|---|
[Android] 안드로이드 스튜디오 기초 (Doit! 안드로이드스튜디오와친해지기) (0) | 2021.03.15 |
[Android] URL Schemes(외부 스킴) (0) | 2021.03.12 |
[Android] 안드로이드 생명주기 (0) | 2021.03.11 |
[Android] setDisplayWindow() (0) | 2021.03.10 |