Android Studio

[Android Studio] AlertDialog

건휘맨 2024. 6. 5. 16:42

AlertDialog.Builder 생성 및 설정

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

// setCancelable(false): 다이얼로그 외부를 터치해도 닫히지 않도록 설정
builder.setCancelable(false);
builder.setTitle("퀴즈 끝!");
builder.setMessage("지금까지 맞춘 문제는 " + correctCnt + "개 입니다. 다시풀기를 누르시면 퀴즈가 다시 시작되고, 종료를 누르시면 퀴즈가 종료됩니다.");

 

버튼 설정

AlertDialog 의 버튼은 3개까지 사용할 수 있다.

 

1. 긍정 버튼 설정

builder.setPositiveButton("다시풀기", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // 다시풀기는 데이터를 초기화 시켜줘야 한다.
        currentQuizIndex = 0;
        // 1. 첫번째 문제가 다시 화면에 나와야 한다.
        Quiz quiz = quizArrayList.get(currentQuizIndex);
        txtQuiz.setText(quiz.getQuestion());
        // 2. 프로그레스바도 처음부터 나와야 한다.
        progressBar.setProgress(currentQuizIndex + 1);
        // 3. 결과도 초기화 한다.
        txtResult.setText("결과");
        correctCnt = 0;
    }
});

 

2. 부정 버튼 설정

builder.setNegativeButton("종료", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // 현재의 액티비티를 종료시키는 함수 => finish()
        finish();
    }
});

 

다이얼로그 표시

builder.show();

 

전체 코드

private void showAlertDialog() {

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setCancelable(false);
        builder.setTitle("퀴즈 끝!");
        builder.setMessage("지금까지 맞춘 문제는 "+correctCnt+"개 입니다." +
                " 다시풀기를 누르시면 퀴즈가 다시 시작되고, 종료를 누르시면 퀴즈가 종료됩니다.");
        builder.setPositiveButton("다시풀기", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 다시풀기는 데이터를 초기화 시켜줘야 한다.
                currentQuizIndex = 0;
                // 1. 첫번째 문제가 다시 화면에 나와야 한다.
                Quiz quiz = quizArrayList.get(currentQuizIndex);
                txtQuiz.setText(quiz.getQuestion());
                // 2. 프로그레스바도 처음부터 나와야 한다.
                progressBar.setProgress(currentQuizIndex+1);
                // 3. 결과도 초기화 한다.
                txtResult.setText("결과");
                correctCnt = 0;
            }
        });
        builder.setNegativeButton("종료", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 현재의 액티비티를 종료시키는 함수 => finish()
                finish();
            }
        });
        builder.show();

    }