본문 바로가기

안드로이드

[안드로이드] Dialog와 DialogFragment

개요

안드로이드 개발 과정 중 dialog를 구현할 때 흔히 마주치는 Dialog와 DialogFragment에 대한 비교 게시글이다.

 

DialogFragment란?

DialogFragment는 클래스명에서 보이듯 fragment이다. 하지만, dialog를 보여주는데 활용되는 fragment라는 특징이 있다. 이 Fragment는 Dialog 객체를 포함하고 fragment의 상태에 따라 적절히 화면에 디스플레이 된다. 

 

 

무엇을 사용해야 하는가?

공식문서에서는 DialogFragment를 사용하는 것을 권장한다. 그 이유는 다음과 같다.

  • DialogFragment는 fragment의 생명주기를 활용할 수 있다. 
  • 기본 Dialog를 활용할 때 Activity가 파괴되더라도 dialog가 존재하여 생기는 leaked window crash, IllegalStateException을 문제를 해결할 수 있다.
  • 필요한 때에 따라 fragement, dialog 중 하나로 적절히 사용할 수 있다.

 

DialogFragment를 Fragment로 사용하는 예:

FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.add(R.id.navigation_fragment, mFriendFragment);
trans.commit();

 

DialogFragment를 Dialog로 사용하는 예:

FragmentManager fm = getFragmentManager();
UnsubscribeTabletFragment fragment = new UnsubscribeTabletFragment();
fragment.show(fm, "dialog");

 

 

참고