[안드로이드] Activity에서 AlertDialog 객체의 show() 사용법

프로그래밍/Android 관련2017. 12. 15. 16:35

안녕하세요. 개발자 드리머즈입니다.


Android Developer에 나온 가이드(https://developer.android.com/guide/topics/ui/dialogs.html)

를 따라 AlertDialog를 사용하기 위해 아래처럼 CustomDialogFragment를 만들고,

public class CustomDialogFragment extends DialogFragment {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

builder.setMessage("Test Message")
.setPositiveButton("Positive", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
})
.setNegativeButton("Negative", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {

}
});


return builder.create();
}
}


사용하고자 하는 Activity에서 CustomDialogFragment의 객체를 만든 다음에 이 객체에서 show()함수를 호출하려고 했습니다. 그런데 이 show()함수의 첫 번째 인자로.. FragmentActivity에서 사용 가능한 getSupportFragmentManager()를 주거나, Fragment에서 사용 가능한 getFragmentManager()를 주어야합니다.


Android Developer 공식 가이드 내용 :

대화상자를 표시하고자 하는 경우, DialogFragment의 인스턴스를 생성한 다음 FragmentManager와 대화상자 프래그먼트에 대한 태그 이름을 전달하여 show()를 호출합니다.

FragmentManager를 가져오려면 FragmentActivity에서 getSupportFragmentManager()를 호출하거나 Fragment에서 getFragmentManager()를 호출합니다.


그런데 저처럼 Acitivity에서 AlertDialog의 show()함수를 사용하고자 하면 어떻게 해야할까요?


결론은.. 그냥 getFragmentManager()함수를 사용하면 됩니다.

제가 디벨로퍼 사이트의 말을 잘못 이해했던 것인지.. Fragment에서만 getFragmentManager()함수 사용이 가능한 줄 알았는데 그냥 Activity에서도 사용이 가능하네요.


getFragmentManager()함수가 어디 정의되어있는지 살펴보니..



Activity클래스 안에 정의되어 있네요.




Activity와 Fragment에 대해서 공부를 해야할 것 같습니다.




작성자

Posted by 드리머즈

관련 글

댓글 영역