본문 바로가기
Development/Android

[안드로이드]Fragment끼리 데이터 전달

by 메정 2020. 3. 3.

액티비티 - 액티비티 간의 데이터 전달일 때는 Intent 사용하여 데이터 전송, 받기가 가능, 

Fragment - Fragment / Fragment - 액티비티 는 Intent 사용하여 데이터 전송, 받기가 불가능하다!

그렇다면? 어떻게 데이터를 전송, 받는 것이 가능할까 ? 

Bundle을 이용하면 가능함 ! 

 먼저, Intent와 Bundle의 차이를 알아보자.  //저장과 전달의 차이를 갖고 있다!

Intent : 어플리케이션 내 액티비티 간의 데이터를 전달할 때 사용하는 클래스

Bundle : 문자열로 된 키와 여러가지의 타입의 값을 매핑하여 저장하는 Map 클래스!   //다양한 데이터 타입을 전송 가능.


나는 Fragment - Fragment 끼리 데이터 전송 시, Intent를 이용하여 데이터 전달을 시도해보았는데 되지 않았음! 이럴 땐 Bundle을 이용해야 함!

1. 데이터를 전송하는 쪽 (setArgment())

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment1 fragment1 = new Fragment1();
//프레그먼트끼리 rfgName넘기기 위한 bundle
Bundle bundle = new Bundle();
bundle.putString("Name", name);
fragment1.setArguments(bundle); //Name 변수 값 전달. 반드시 setArguments() 메소드를 사용하지 않으면, 받는 쪽에서 null 값으로 받음.
//버튼을 눌렀을 때 RE-Fr자바를 탈 수 있도록 함
transaction.replace(R.id.frame, fragment1); //프레임 레이아웃에서 프레그먼트 1로 변경(replace)해라
transaction.commit(); //저장해라 commit

2. 데이터를 받는 쪽 (getArgment())

Bundle bundle = getArguments(); //번들 받기. getArguments() 메소드로 받음.

if(bundle != null){
name = bundle.getString("rfgName"); //Name 받기.
System.out.println(Name); //확인

}


댓글