본문 바로가기
Android

안드로이드 스튜디오, JAVA] 토스트, 스낵바, 대화상자

by 김마리님 2020. 7. 22.

1. Toast.

결과화면 : 

토스트는 액티비티가 아니므로 한 액티비티에 종속되는 특성이 있다.

Toast.makeText(this, "안녕", Toast.LENGTH_SHORT).show();

대신 첫 매개변수에 컨텍스트가 들어가야 하기 때문에 함수로 따로 만들려면 전역변수로 컨텍스트 변수를 만들어 호출하는 방식을 취해야한다.

 

public class Test {
    public static void callToast(Context context){
        Toast.makeText(context, "안녕", Toast.LENGTH_SHORT).show();
    }
}

 

2. SnackBar

 

화면 아래에 뜨는 작은 액티비티이다.

이것은 토스트처럼 컨텍스트에 종속되는 것이 아니라 뷰에 띄우는 것이기 때문에 뷰를 매개변수로 받는다.

        mainview=findViewById(R.id.main_view);
        Snackbar.make(mainview,"안녕", BaseTransientBottomBar.LENGTH_LONG).show();
        Snackbar.make(getWindow().getDecorView(),"안녕", BaseTransientBottomBar.LENGTH_LONG).show();

 mainView는 액티비티의 메인 레이아웃 뷰이고, getDecorView는 화면의 최상단뷰이다.

 

(mainView에 올릴 경우)

 

(getDecorView()에 올릴 경우)

 

3. 선택화면

화면 위에 선택창을 띄운다

 button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showMessage();
            }
        });
    }

    private  void showMessage(){
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        Log.d(TAG, "showMessage: this : "+this);

        builder.setTitle("안내");
        builder.setMessage("종료하시겠습니까?");
        builder.setIcon(android.R.drawable.ic_dialog_alert);

        builder.setPositiveButton("예", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.d(TAG, "onClick: which : "+which);
                String message="예 버튼이 눌렸습니다.";
                textView.setText(message);
            }
        });

        builder.setNeutralButton("취소", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.d(TAG, "onClick: which : "+which);
                String message="취소 버튼이 눌렸습니다.";
                textView.setText(message);
            }
        });

        builder.setNegativeButton("아니요", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Log.d(TAG, "onClick: which : "+which);
                String message="아니오 버튼이 눌렸습니다.";
                textView.setText(message);
            }
        });

        AlertDialog dialog=builder.create();
        dialog.show();
    }

이때 which는 -1(예), -2(아니오), -3(취소)을 가진다.

 

대화상자 결과화면 :

 

반응형