이번 포스팅에서는 Fragment로 데이터를 전달하는 방법에 대해 알아보겠습니다.
보통 일반적인 클래스의 경우, Constructor
을 통해서 사용자가 지정하는 데이터를 전달할 수 있습니다. 그러나 프래그먼트의 경우, 디폴트 생성자를 사용자 임의대로 변경할 수가 없기 때문에, Bundle을 이용하여 데이터를 전달합니다.
필자의 경우, viewPager
을 통해 프래그먼트를 생성하고, 해당 프래그먼트로 string값 한 개를 전달하는 코드를 작성했습니다.
ViewPagerActivity
1 2 | FragmentReceiver fReceiver = FragmentReceiver.shareMyString(mystring); adapter.addFragment(fReceiver); | cs |
FragmentReceiver
1234567891011121314 public static FragmentReceiver shareMyString(String value) {FragmentReceiver f = new FragmentReceiver();Bundle args = new Bundle();args.putString("mystring", value);f.setArguments(args);return f;}@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);myString = getArguments().getString("mystring");}cs
ViewPagerActivity에서는 어댑터에 add하기 전에, 미리 프래그먼트를 선언하고, 메소드로 데이터를 전달합니다.
전달 받을 프래그먼트에서는 위와 같이 ShareMyString
이라는 메소드를 하나 만들고, onViewCreated
에서 부여한 key값을 통해 데이터를 받을 수 있습니다.
'Developer > Android, Java' 카테고리의 다른 글
[안드로이드] 지하철 역 클릭 시 이벤트 구현하기 2편 (4) | 2019.12.02 |
---|---|
[안드로이드] Retrofit에 Header 추가하여 요청하기 (279) | 2019.05.23 |
[안드로이드] View 터치 시 터치 이벤트 구현하기 (266) | 2019.05.22 |
[안드로이드] ArrayList<Object> 인텐트 넘기는 방법 (284) | 2019.05.22 |
[안드로이드] ScrollView 안에 RecyclerView 을 넣을 수 있나요? (281) | 2019.05.22 |
댓글