[Android] 다이얼로그 프래그먼트 사라지지 않는 다이얼로그 만들기

Android/Android · 2020. 6. 15. 17:17
반응형

https://survivalcoding.com/p/android_basic

 

될 때까지 안드로이드

될 때까지 안드로이드에 수록된 예제의 라이브 코딩 해설

survivalcoding.com

위 서적을 참고하였습니다.

 

 

 

 이번 포스트에선 DialogFragment로 사라지지 않는 다이얼로그를 만들 겁니다. 예전 포스트에서 화면 고정을 시키는 방법이 아닌 프래그먼트를 이용하는 방법입니다. 이것도 프래그먼트의 생명주기를 이용하는 겁니다. 무척 간단하니 바로 가겠습니다. 따로 레이아웃은 만들지 않겠습니다.

 

 먼저, 다이얼로그 프래그먼트 클래스를 만들기 위해 패키지 우클릭 후 [ New -> Java Class ]를 눌러 다음과 같이 입력해주세요.

 

ExitDialogFragment

 

 그다음 OK를 누른 후 다음과 같이 코드를 작성해줍니다.

 

DialogFragment.java

public class ExitDialogFragment extends DialogFragment {

    @NonNull
    @Override
    public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("종료 확인");
        builder.setMessage("정말 종료?");
        builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                getActivity().finish();
            }
        });
        builder.setNegativeButton("취소", null);

        return builder.create();
    }
}

 

 여기선 AlertDialog의 Builder를 사용해서 다이얼로그를 생성합니다. 나머진 저번 다이얼로그 만드는 포스트 내용과 상당히 닮아 있습니다. 마지막에 완성한 다이얼로그를 반환하면 끝입니다.

 

 다음은 MainActivity입니다.

 

 MainActivity.java

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onBackPressed() {
        ExitDialogFragment exitDialogFragment = new ExitDialogFragment();
        exitDialogFragment.show(getSupportFragmentManager(), "exit");
    }
}

  

 ExitDialogFragment 객체를 만든 다음, show()를 하면 끝입니다.

 

 다음은 결과입니다.

 

 

 

 다이얼로그를 띄운 상태에서 회전을 해도 사라지지 않고 정상적으로 실행되는 것을 볼 수 있습니다. 프래그먼트를 사용하니 정말 간단하지 않나요? 만약 액티비티만을 사용했다면 정말 복잡한 코드가 완성됐을 수 있습니다. 감사합니다.

반응형