Android 개발 Tip.
- Activity Start Method
액티비티 실행시 값 전달 방법
startActivityForResult
VS
StartActivity
일반적으로 Activity를 띄울 때는
startActivity()를 사용한다.
다른 방법으로는 startActivityForResult()도 있다.
startAcitivity와 비교하여 간단하게 정리해보자.
1. 용도 차이
startActivity : 새 액티비티를 열어줌 (단방향)
startActivityForResult : 새 액티비티를 열어줌 + 결과값 전달 (쌍방향)
즉, 결과값을 전달해주느냐 아니냐의 차이다.
Activity에서 resultCode를 보내서 원하는 기능을 수행할 수 있다.
2. 실행 코드
- MainActivity에서 -> SubActivity를 여는 경우
startActivity(Intent intent)
1
|
startActivity(new Intent(MainActivity.this, SubActivity.class));
|
cs |
startActivityForResult(Intent intent, int requestCode)
1
|
startActivityForResult(new Intent(MainActivity.this, SubActivity.class), 0);
|
cs |
끝에 인자 값으로 하나 더 들어가는 것을 볼 수 있다. ('0')
int형 requestCode인데 -> 원하는 숫자를 넣어주면 된다.
여러 액티비티를 쓰는 경우, 어떤 Activity인지 식별하는 값이다.
3. startActivityForResult 사용법 예제
1) startActivityForResult()
MainActivity에 작성한다.
MainActivity에서 SubActivity를 연다.
MainActivity.java
1
|
startActivityForResult(new Intent(MainActivity.this, SubActivity.class), 0);
|
cs |
2) setResult()
SubActivity 종료 시점에 작성한다.
RESULT_OK 또는 RESULT_CANCEL을 보내도 된다.
SubActivity.java
1
2
|
setResult(RESULT_OK);
finish();
|
cs |
3) onActivityResult()
MainActivity에 작성한다.
결과를 받는 곳이다.
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0){
if (resultCode==RESULT_OK) {
Toast.makeText(MainActivity.this, "result ok!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "result cancle!", Toast.LENGTH_SHORT).show();
}
}else if(requestCode==1){
...
}
}
|
cs |
requestCode: activity 식별 값
resultCode: setResult()에서 보낸 값
data: putExtra()를 이용하여 intent값도 보낼 수 있다.
정리.
과정을 다시 정리해보자.
Step 1> SubActivity 실행.
Step 2> SubActivity 종료할 때 -> setResult() 실행
Step 3> MainActivity로 돌아오면서 -> onActivityResult()에 결과값 전달
'Android 개발 > android :: Tip' 카테고리의 다른 글
[안드로이드 EditText] 자동 포커스 막기 (켜자마자 키보드 올라오는 현상 방지) (0) | 2020.08.14 |
---|---|
[안드로이드 Activity] 새 액티비티 추가 하기 - 정석적인 방법 (0) | 2020.08.03 |
[안드로이드 Dialog] AlertDialog 폰트 자체적으로 설정하는 방법 (0) | 2020.08.02 |
[안드로이드 스튜디오] 시작화면 설정하기 (프로젝트 선택 or 이전 프로젝트 자동 실행) (0) | 2020.08.01 |
[안드로이드 Activity] 액티비티 화면 켜짐 유지 및 해제 코드 (Keep Screen On - 화면을 꺼지지 않게 유지하기) (0) | 2020.05.23 |
[안드로이드 Animation] 애니메이션 딜레이 - 시간 지연 설정하기 (시작 delay 설정) (2) | 2020.05.22 |
[안드로이드 XML] 자동으로 코드 줄바꾸고 들여쓰기 (0) | 2020.04.04 |
[안드로이드 View] Textview 또는 Button 기본 여백 제거하기 (0) | 2020.04.03 |
댓글