홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
인텐트(Intent)로 데이터 전달(putExtra, getExtras)
5년 전
인텐트(Intent)를 사용할 때 데이터를 전달하는 방법에 대해서 이야기 하겠다.

Intent로 다른 Activity(예, AnotherActivity.class)를 실행시킬 때는 다음과 같이 한다.
Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
startActivity(intent);

그런데, 여기에 추가로 AnotherActivity 데이터를 전달하고 싶을 때가 있다.
이때 사용할 수 있는 것이 putExtra() 다.
Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
intent.putExtra("name", "rio");
intent.putExtra("age", 10);
startActivity(intent);

그리고, AnotherActivity에서는 다음과 같이 getExtras()를 이용해서 데이터를 받을 수 있다.
(바로 데이터를 받을 것이므로 보통은 onCreate() 메서드에 구현 한다.)
Intent intent = getIntent();
String name = intent.getExtras().getString("name");
int age = intent.getExtras().getInt("age");



(*** 참고 1 ***)
startActivity() 가 아니고 startActivityForResult()를 사용한다면 다음과 같이 하면 된다.
public static final int REQUEST_CODE = 1001;

....

Intent intent = new Intent(getApplicationContext(), AnotherActivity.class);
intent.putExtra("name", "rio");
intent.putExtra("age", 10);
startActivityForResult(intent, REQUEST_CODE);

....​

protected void onActivityResult(int requetCode, int resultCode, Intent Data) {
  super.onActivityResult(requestCode, resultCode, Data);
     if(requestCode == REQUEST_CODE) {
        if(resultCode == RESULT_OK) {
           String phoneNumber = data.getExtras().getString("phoneNumber");
        }
     }
}

AnotherActivity에서 데이터를 넣는 부분을 보면
Intent resultIntent = new Intent();
resultIntent.putExtra("phoneNumber", "010-1234-5678");
setResult(RESULT_OK, resultIntent);

이 코드는 Activity 간의 데이터 전달을 가능하게 하는 코드이므로 유용하게 사용될 수 있다.
(REQUEST_CODE, RESULT_OK 부분에는 임의의 integer 값을 넣어도 된다.)


(*** 참고 2 ***)
startActivityForResult()와 setResult() 코드를 좀 더 고치면 다음과 같다.

상황 : 하나의 Activity에서 여러 Activity로 데이터를 주고 받아야 할 경우
public static final int REQUEST_CODE_FOR_ACTIVITY_1 = 1001;
public static final int REQUEST_CODE_FOR_ACTIVITY_2 = 1002;
....

startActivityForResult(intent, REQUEST_CODE_ACTIVITY_1);
​startActivityForResult(intent, REQUEST_CODE_ACTIVITY_2);
....​

protected void onActivityResult(int requetCode, int resultCode, Intent Data) {
  super.onActivityResult(requestCode, resultCode, Data);
        switch (requestCode) {
        case REQUEST_CODE_ACTIVITY_1:      
              if(resultCode == RESULT_OK && Data != null) {
                   // 결과가 OK 일 때 할일
              }else if(resultCode == RESULT_CANCELED) {
                   // 결과가 CANCEL 일 때 할일
              }
              break;
         case REQUEST_CODE_ACTIVITY_2:
              if(resultCode == RESULT_OK && Data != null) {
                   // 결과가 OK 일 때 할일
              break;
        }
}
추천추천 : 141 추천 목록
번호 제목
1,339
 Windows10 특정 프로그램(OCS 2007 R2)에서 첨부파일 드래그앤드롭이 안 되는 현상
1,338
 윈도우 로그, 관리 이벤트 삭제
1,337
 클린 부팅
1,336
 Windows 구성 요소 저장소에서 파일 손상 검사
1,335
 Windows Defender 검사 기록 삭제하기
1,334
 간단한 윈도우 10 정품 인증 (크랙프로그램 필요없음)
1,333
 오류난 폴더 강제삭제 방법
1,332
 크롬에서 플래시 항상 허용하도록 설정하기 (레지스트리) reg 파일 만들기
1,331
 GPT 디스크를 MBR 디스크로 변환
1,330
 MBR 디스크를 GPT 디스크로 변환
1,329
 구글 검색을 200% 활용하게 해주는 검색 명령어 총정리
1,328
 [Jquery] jQuery로 우클릭 방지, 드래그 방지, 선택 방지 (IE10, 파이어폭스, 크롬 확인)
1,327
 php 사용자 접속IP, 브라우저정보, os정보, http, https 접속프로토콜 알아오기
1,326
 [PHP] IE 브라우저 접속 검출하기
1,325
 윈도우10 시스템 예약 파티션 확인 및 삭제
1,324
 윈도우10 복구 파티션 삭제 방법
1,323
 윈도우10 부팅지연 검은화면에서 몇분간 머무는 현상 해결방법
1,322
 삼성노트북 바이오스 진입이 불가능한 경우 바이오스 재설치와 NVRAM 초기화
1,321
 익스플로러(IE)의 구글 검색공급자 한글로 변경 방법
1,320
 윈도우 10 기본 앱 삭제 및 복구
1,319
 meta 태그 http-equiv 설정방법과 차이점
1,318
 구글(Google)검색에서 고급연산자를 이용하여 많은 정보를 얻는 방법
1,317
 프로그램 없이 하드디스크 복사 및 백업하기
1,316
 Windows7 업데이트 기록 삭제방법
1,315
 포토샵 psd 파일 연결 레지스트리(registry) 편집
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.