안드로이드

[안드로이드] Fragment 에서 Activity 로 데이터 전달(Fragment to Activity)

wangkisa 2016. 12. 6. 11:14

최근 들어서는 Fragment 를 많이 사용함에 따라


Fragment 에서 Activity 로 데이터를 보내거나 사용해야 될 일이 많아졌다.


eventBus 같은걸 사용하면 더 쉽게 사용되긴 하지만


정통적인 방법을 쓰고 싶어서 찾아보았다.



1. Fragment 에서 인터페이스 생성


public interface OnApplySelectedListener {

        public void onCatagoryApplySelected( 자료형(String, int 등) 변수명);

}


2. 사용될 Activity에서 위 인터페이스 함수 구현


 클래스 이름부에서 implements  ExampleFilterFragment.OnApplySelectedListener

를 추가해 준 뒤, 


@Override

public void onCatagoryApplySelected( 자료형(String, int 등) 변수명) {

// 해당 Activity 에서 사용될 동작

}



3. 처음에 인터페이스 만든 ExampleFilterFragment에서 사용될 함수 추가


예를 들어 적용버튼에서 클릭이벤트로 사용되는 경우


private Activity activity;


    @Override

    public void onAttach(Context context) {

        super.onAttach(context);

        if(context instanceof Activity) {

    // 사용될 activity 에 context 정보 가져오는 부분

            this.activity = (Activity)context;

        }

    }


btnApply.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

       ((OnApplySelectedListener)activity).onCatagoryApplySelected(적용될 데이터);


            }

});