안드로이드

안드로이드 dialog 에서 activity로 또는 dialogFragment에서 fragment로 데이터 전달

알통몬_ 2017. 4. 13. 08:41
반응형

 

 

 



안녕하세요 알통몬입니다.
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!
포스팅 내용이 찾아주신 분들께 도움이 되길 바라며
더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
 

 

 

이번 포스팅에서는 

 

안드로이드 dialog 에서 activity로 또는 dialogFragment에서 fragment로 데이터 전달하는 방법에

알아보겠습니다.

 

DialogFragment에서 Fragment에 데이터를 보내는 코드를 보겠습니다.

Dialog에서 Activity에 데이터를 보내는 방법도 동일합니다.

public class ApprovalDialog extends DialogFragment implements View.OnClickListener {
    OnMyDialogResult mDialogResult;
    private DialogApprovalBinding binding;
    private static final int VIEW = R.layout.dialog_approval;
    String position;
    private Fragment fragment;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        binding = DataBindingUtil.inflate(inflater, VIEW, container, false);
        View view = binding.getRoot();
        binding.requestApprovalBtn.setOnClickListener(this);


        fragment = getActivity().getSupportFragmentManager().findFragmentByTag("approval");
        return view;
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            
            case R.id.requestApprovalBtn:
                        if (fragment != null) {
                            if( mDialogResult != null ){
                                mDialogResult.finish("원하는 값을 담는다.");
                            }
                            DialogFragment dialogFragment = (DialogFragment) fragment;
                            dialogFragment.dismiss();
                        }
                break;
        }
    }


    public void setDialogResult(OnMyDialogResult dialogResult){
        mDialogResult = dialogResult;
    }


    public interface OnMyDialogResult{
        void finish(String result);
    }
}




//그리고 DialogFragment를 호출했던 Fragment에서는
ApprovalDialog dialog = new ApprovalDialog();
dialog.show(getFragmentManager(), "approval");
dialog.setDialogResult(new ApprovalDialog.OnMyDialogResult() {
    @Override
    public void finish(String result) {
        // result에 dialog에서 보낸값이 저장되어 돌아옵니다.
           값을 가지고 원하는 동작을 하면됩니다.
        }
    }
});

 

별로 어렵지 않죠?

핵심이 되는 코드들은 밑줄을 쳐놓았습니다~

다이얼로그에서 액티비티나 다이얼로그프래그먼트에서 프래그먼트로 데이터를 보내는 여러가지 방법을

찾아보았지만 위 방법이 가장 간단하고 편한 것 같네요 ~

 

이상입니다.

 

반응형