본문 바로가기
Developer/Android, Java

[안드로이드] Fragment 로 데이터 전달하기

by Doony 2019. 5. 23.

이번 포스팅에서는 Fragment로 데이터를 전달하는 방법에 대해 알아보겠습니다.
보통 일반적인 클래스의 경우, Constructor을 통해서 사용자가 지정하는 데이터를 전달할 수 있습니다. 그러나 프래그먼트의 경우, 디폴트 생성자를 사용자 임의대로 변경할 수가 없기 때문에, Bundle을 이용하여 데이터를 전달합니다.

필자의 경우, viewPager을 통해 프래그먼트를 생성하고, 해당 프래그먼트로 string값 한 개를 전달하는 코드를 작성했습니다.

ViewPagerActivity

1
2
FragmentReceiver fReceiver = FragmentReceiver.shareMyString(mystring);
adapter.addFragment(fReceiver);
cs

FragmentReceiver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public static FragmentReceiver shareMyString(String value) {
        FragmentReceiver f = new FragmentReceiver();
        Bundle args = new Bundle();
        args.putString("mystring", value);
        f.setArguments(args);
        return f;
    }
 
 
    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        myString = getArguments().getString("mystring");
    }
cs

ViewPagerActivity에서는 어댑터에 add하기 전에, 미리 프래그먼트를 선언하고, 메소드로 데이터를 전달합니다.
전달 받을 프래그먼트에서는 위와 같이 ShareMyString이라는 메소드를 하나 만들고, onViewCreated에서 부여한 key값을 통해 데이터를 받을 수 있습니다.

댓글