[Android] 액티비티 데이터 통신 - Intent

원준·2023년 7월 19일

Android Studio

목록 보기
14/40

Intent ?

  • 앱 컴포넌트가 무엇을 할 것인지를 담는 메시지 객체
  • 다른 액티비티사이에 데이터를 주고 받기 위한 용도

단방향 통신

  • 단방향 통신은 데이터를 주는것 밖에 못한다.

    • 서로 주고 받는 것은 못한다.
  • Main Activity

    		// 두번째 액티비티를 실행시키고 싶다.
    		   //해당 엑티비티가 다른 액티비티를 실행시킨다의미로 파라미터를 설정해줘야한다.
    		Intent intent = new Intent(MainActivity.this, SecondActivity.class); //Intent 객체 생성
                                                       // 객체로 생성해 메모리에 올리라는 뜻
                                                       // 메모리에 생성한 적이 없기때문에 this를 사용할 수 가 없다.
    		// 데이터를 전달하기 위해 Intent에 담아주자.
    		intent.putExtra("name", name); //key : value로 저장됨
    		intent.putExtra("age", age);
    
    		// 단방향 데이터 전달 액티비티 실행
    		startActivity(intent);
  • Second Activity 데이터 받아서 사용하기

	// 받아오는 데이터가 있으면, 데이터를 받아온다.
    String name = getIntent().getStringExtra("name");
    age = getIntent().getIntExtra("age", 0);

양방향 통신

  • 데이터를 주고 받는 통신을 말한다.

  • 단방향 처럼 데이터를 설정하고 추가하는것은 같으나, 통신을 하는 방법이 다르다.

  • Main Activity

    //매개 변수
    // 양방향 데이터 교환 액티비티 실행 => ActivityResultLauncher
    ActivityResultLauncher<Intent> launcher = registerForActivityResult(
       new ActivityResultContracts.StartActivityForResult(),
       new ActivityResultCallback<ActivityResult>() {
           @Override
           public void onActivityResult(ActivityResult result) {
               //데이터를 받아오는 코드는 여기에 작성.
               if ( result.getResultCode() == 22){
    
                    int futureAge = result.getData().getIntExtra("data", 0);
                    
               }
           }
       });
    	//--------------------------------------
    
    //onCreate()
    // 두번째 액티비티를 실행시키고 싶다.
       //해당 엑티비티가 다른 액티비티를 실행시킨다의미로 파라미터를 설정해줘야한다.
    Intent intent = new Intent(MainActivity.this, SecondActivity.class); //Intent 객체 생성
    
    	// 데이터를 전달하기 위해 Intent에 담아주자.
    intent.putExtra("name", name); //key : value로 저장됨
    intent.putExtra("age", age);
    
    	// 양방향 데이터 교환 액티비티 실행 => ActivityResultLauncher
    launcher.launch(intent); // 실행
    
  • Second Activity

    //데이터를 받을 때 단방향과 동일 하다.
    // 받아오는 데이터가 있으면, 데이터를 받아온다.
    String name = getIntent().getStringExtra("name");
    age = getIntent().getIntExtra("age", 0);
    
    //데이터를 다시 보낼때는 Main에서 받을때 사용되는 코드와 동일한 코드로 넣어야한다.
    
     // 데이터를 보내기위해 intent가 필요하다.
     Intent intent = new Intent(); // 새로 다른 액티비티를 생성하는 것이 아니기때문에 적을 필요 없다.
     intent.putExtra("data", data);
    
     setResult(22, intent);
     // resultCode : 기준 상태 코드 (구분을 위한)
     // data : 보낼 데이터
    
profile
공부해보자

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

소중한 정보 잘 봤습니다!

답글 달기