πŸ€–Android/Java

[Android] μ•ˆλ“œλ‘œμ΄λ“œ - AlertDialog μ•ˆλ‚΄ νŒμ—… μ‚¬μš©ν•˜λŠ” 방법

루리야ㅑ 2023. 12. 23. 10:19
λ°˜μ‘ν˜•

AlertDialogλŠ” μ•ˆλ“œλ‘œμ΄λ“œ μ•±μ—μ„œ μ‚¬μš©μžμ—κ²Œ λ©”μ‹œμ§€, μ•Œλ¦Ό λ˜λŠ” 선택을 μš”μ²­ν•˜κΈ° μœ„ν•΄ νŒμ—… ν˜•νƒœλ‘œ λ‚˜νƒ€λ‚˜λŠ” λŒ€ν™” μƒμžμ΄λ‹€. 이 λŒ€ν™” μƒμžλŠ” μ‚¬μš©μžμ˜ 주의λ₯Ό 끌고, λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•˜κ±°λ‚˜ μ‚¬μš©μžλ‘œλΆ€ν„° 정보λ₯Ό μˆ˜μ§‘ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

 

1. AlertDialog import

import androidx.appcompat.app.AlertDialog;

2. showAlertDialog() λ©”μ†Œλ“œ 생성

  • setCancelable(boolean cancelable): 이 λ©”μ„œλ“œλŠ” AlertDialogκ°€ μ·¨μ†Œ κ°€λŠ₯ν•œμ§€ μ—¬λΆ€λ₯Ό μ„€μ •ν•œλ‹€.
    μ·¨μ†Œ κ°€λŠ₯ν•œ 경우 μ‚¬μš©μžκ°€ λ’€λ‘œκ°€κΈ° λ²„νŠΌμ„ λˆ„λ₯΄κ±°λ‚˜ λŒ€ν™” μƒμž μ™ΈλΆ€λ₯Ό ν„°μΉ˜ν•˜μ—¬ λŒ€ν™” μƒμžλ₯Ό 닫을 수 μžˆλ‹€.
    true둜 μ„€μ •ν•˜λ©΄ κ°€λŠ₯ν•˜κ³ , false둜 μ„€μ •ν•˜λ©΄ λ‹«νž 수 μ—†λ‹€.
  • setTitle(CharSequence title): 이 λ©”μ„œλ“œλŠ” AlertDialog의 제λͺ©μ„ μ„€μ •ν•œλ‹€. 제λͺ©μ€ AlertDialog 상단에 ν‘œμ‹œλ˜λŠ” ν…μŠ€νŠΈλ‹€.
  • setMessage(CharSequence message): 이 λ©”μ„œλ“œλŠ” AlertDialog의 λ©”μ‹œμ§€λ₯Ό μ„€μ •ν•œλ‹€. λ©”μ‹œμ§€λŠ” μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œλ˜λŠ” μ£Όμš” λ‚΄μš©μ„ μ„€λͺ…ν•˜λŠ” ν…μŠ€νŠΈλ‹€.
  • setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener): 이 λ©”μ„œλ“œλŠ” AlertDialog에 긍정적인 λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” λ²„νŠΌμ„ μΆ”κ°€ν•œλ‹€. textλŠ” λ²„νŠΌμ— ν‘œμ‹œλ  ν…μŠ€νŠΈμ΄κ³ , listenerλŠ” λ²„νŠΌμ„ ν΄λ¦­ν–ˆμ„ λ•Œ ν˜ΈμΆœλ˜λŠ” λ™μž‘μ„ μ •μ˜ν•œλ‹€.
  • setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener): 이 λ©”μ„œλ“œλŠ” AlertDialog에 뢀정적인 λ™μž‘μ„ μˆ˜ν–‰ν•˜λŠ” λ²„νŠΌμ„ μΆ”κ°€ν•œλ‹€. textλŠ” λ²„νŠΌμ— ν‘œμ‹œλ  ν…μŠ€νŠΈμ΄κ³ , listenerλŠ” λ²„νŠΌμ„ ν΄λ¦­ν–ˆμ„ λ•Œ ν˜ΈμΆœλ˜λŠ” λ™μž‘μ„ μ •μ˜ν•œλ‹€.
  • show(): AlertDialogλ₯Ό 화면에 ν‘œμ‹œν•œλ‹€. create() λ©”μ„œλ“œλ‘œ AlertDialogλ₯Ό λ§Œλ“  후에 이 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ‹€μ œλ‘œ 화면에 λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.
    private void showAlertDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        // 이 λ‹€μ΄μ–Όλ‘œκ·Έμ˜ μ™Έκ³½ 뢀뢄을 λˆŒλ €μ„ λ•Œ, 사라지지 μ•Šλ„λ‘ ν•˜λŠ” μ½”λ“œ
        builder.setCancelable(false); // true : μ·¨μ†Œ ν•  λ•Œ // false : μ·¨μ†Œ μ•ˆλ  λ•Œ
        builder.setTitle("ν€΄μ¦ˆ 끝.");
        builder.setMessage("ν€΄μ¦ˆκ°€ λͺ¨λ‘ λλ‚¬μŠ΅λ‹ˆλ‹€.맞좘 정닡은 "+count+"κ°œμž…λ‹ˆλ‹€.\n λ‹€μ‹œ μ‹œμž‘ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?");
        builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                currentIndex = 0;
                count =0;

                Quiz quiz = quizArrayList.get(currentIndex);

                txtQuiz.setText(quiz.question);
                progressBar.setProgress(currentIndex+1);
                txtResult.setText("κ²°κ³Ό");

//                recreate();
//                progressBar.setProgress(0);
            }
        }); // 긍정 λ²„νŠΌ.
        builder.setNegativeButton("μ·¨μ†Œ", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // ν˜„μž¬ 이 μ•‘ν‹°λΉ„ν‹°λ₯Ό μ’…λ£Œν•œλ‹€. => μ•‘ν‹°λΉ„ν‹°κ°€ 1개면, 앱이 μ’…λ£Œ.
                finish();

            }
        }); // λΆ€μ • λ²„νŠΌ.
        builder.show();
    }

 

2. 확인

λ°˜μ‘ν˜•