개발 중 나는 Fragment에 간단한 정보를 전달할 일이 있어
Fragment를 생성할 때 constructor를 추가하여 넣었던 적이있다.
그런데 빌드시 오류가 났다. non-default 생성자는 Fragment에서 허용되지 않는 듯 보였다.
예를 들어 사용자의 정보인 아이디를 보여주는 Fragment가 있다고 하자.
그렇다면 userId라는 String 타입 값을 Fragment에 넘겨줄 방법이 필요하다.
이때 Bundle을 이용하면 마치 Activity간 Intent처럼 넘겨줄 수 있다.
Fragment fragment = new UserFragment(); // Fragment 생성Bundle bundle = new Bundle(1); // 파라미터는 전달할 데이터 개수bundle.putString("userId", userId); // key , valuefragment.setArguments(bundle);
이런식으로 말이다.
이렇게 Fragment로 정보를 넘겨주고 나면 Fragment의 onCreateView 메소드 안에서
getArguments()를 이용해 간단히 받아와 사용하면 된다.
항상 번들이 뭔가 했는데, 이렇게 유용한거였다니! 감동 ㅎㅎ
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {String userId = getArguments.getString("userId"); // 전달한 key 값return inflater.inflate(R.layout.fragment_one, null);}
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 아름다운 인트로 화면 만들기 (1) 2016.08.17 안드로이드 앱 성능을 최적화 하는 방법 - (1) Render (0) 2016.08.04 안드로이드 PHP GET 방식 통신에서 한글 깨짐(?) 해결 (0) 2016.07.08 안드로이드 EditText를 이용해 리스트뷰 검색 기능 만들기 (9) 2016.07.07 안드로이드 Custom Object Intent로 넘기기, Parcelable 구현 (0) 2016.06.27