마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ListFragment에서 DialogFragement부르는 방법

0 추천

제가 알고 있기로는 ListFragment에서 DialogFragment를 호출할 때, 

FragementManager를 인자로 줍니다. DialogFragment의 onPositiveClick 이벤트를 받는 쪽은 부른 Fragment가 아니라 Fragement를 담고 있는 Activity가 되는데요.  

 

Activity가 event를 받지 않고 host Fragement가 이벤트를 받는 방법 혹시 없을까요.

Tab형식의 Fragement 구성으로 디자인을 하게되면 MainActivity는 껍데기뿐인데..여기서 event를 받아서 처리하기엔 너무 코드량이 비효율적인지라...

 

구글링을 해봤는데, 다들 이런 경우에는 어떻게 하는지 잘 보이지가 않네요.이런 경우가 꽤 많을거로 봤는데 괴이하게도 이런 경험들이 없으신건지..검색에 별로 나오질 않아서리.

키웰 (210 포인트) 님이 2014년 2월 5일 질문
dialogfragment안에서 positiveButton을 하고싶다는 건가요?
DialogFragment 내부에
interface AlertPositiveListener {
        public void onPositiveClick(Map<Integer, Boolean> items);
    }
를 선언해서 ListFragment에서 리스너를 달아 받은 다음 list 를 갱신하고 싶어서요..결국 리스트 갱신을 위한건데요..ListFragment로는 이벤트가 안오고 Manager인 상위 Activity로 날라가서요..아주 골치가 아프네요
차라리 코드를 올려보시죠.

1개의 답변

0 추천

답글을 다시 달려다가 요기다 달께요

DialogFragment 에서 리스너 달 수 있는걸로 알고있습니다.

@Override
	public Dialog onCreateDialog(Bundle savedInstanceState) {
		AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
		builder.setTitle("제목");
		builder.setMessage("메세지");
		builder.setPositiveButton("OK", new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					//여기다가 하면 되지 않나요?? 버튼 리스너??
				}
			});
		return builder.create();
	}

 

 

bangbang (8,820 포인트) 님이 2014년 2월 5일 답변
친절하신 댓글 감사합니다. ^^ 아무튼 말씀드리자면...
DialogFragment에 리스너 달아도 정작 이벤트가 저리로 오진 않습니다. 상위 activity로 날아가게되어있어서요...제가 심사숙고끝에 처리한 방법은 아래와 같습니다.
activity에서 일단 onPositiveClick 받은다음..
UserFragment usrFragment = (UserFragement)pageAdapter.getFragment(0);
usrFragment.onPositiveClick(items);
상기와 같은 방식으로 했더니 되더군요..참고로 저는 fragment를 tab형식으로 쓰는 어플을 만드는데 위와 같이 사용했습니다.
...