반응형
대화 상자 (Alert Dialog)
- 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 작은 창
- 보통은 사용자가 다음으로 계속 진행하기 전에 조치를 취해야 하는 이벤트에 사용
- AlertDialog
- 제목 한 개, 버튼 최대 세 개, 선택 가능한 항목 목록 또는 맞춤 레이아웃 한 개를 표시할 수 있는 대화상자
- DatePickerDialog, TimePickerDialog
- 미리 정의된 UI가 있는 대화상자이며, 사용자가 날짜 또는 시간을 선택
구문
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle("타이틀 메시지");
alert.setMessage("메시지");
// 대화상자 '확인 버튼' 이벤트
alert.setPositiveButton("확인 버튼의 출력 문구", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// 확인 버튼 클릭시 실행 할 코드 작성
}
});
// 대화상자 '취소 버튼' 이벤트
alert.setNegativeButton("취소 버튼의 출력 문구", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// 취소 버튼 클릭시 실행 할 코드 작성
}
});
// 대화상자 버튼을 누르지 않으면 화면이 넘어가지 않게 설정
alert.setCancelable(false);
// 대화상자 화면에 표시
alert.show();
기능 설계
- 버튼을 누르면 대화 상자 출력
- 예를 누를 경우 화면에 OK 출력
- 아니오를 누를 경우 액티비티 종료
레이아웃 UI 설계
- ALERT 버튼을 누르면 대화 상자 출력
소스 코드
- MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle("앱 종료");
alert.setMessage("이 앱을 종료하시겠습니까?");
// 대화상자 'Yes' 이벤트, 액티비티 종료
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish(); // 액티비티 종료
}
});
// 대화상자 'No' 이벤트, Ok 문구 출력
alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getApplicationContext(), "Ok", Toast.LENGTH_LONG).show();
}
});
// 대화상자 버튼을 누르지 않으면 화면이 넘어가지 않게 설정
alert.setCancelable(false);
// 대화상자 화면에 표시
alert.show();
}
});
}
}
실행 화면
- ALERT 버튼을 누르면 뜨는 다이얼로그
- No를 누를 경우 Ok 문구 출력
- Yes를 누를 경우 액티비티 종료
뒤로 가기 버튼 활용 (앱 종료)
- 뒤로 가기 버튼을 누르면 기존의 뒤로 가기 기능을 비활성화하고 대화상자로 기능 재정의
- 앱 종료 대화상자에서 예를 누르면 종료, 아니면 Ok문구 출력
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onBackPressed() {
// super.onBackPressed(); 비활성화하여 백버튼의 기능 비활성화하고 새로운 기능 재정의
AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
alert.setTitle("앱 종료");
alert.setMessage("이 앱을 종료하시겠습니까?");
// 대화상자 'Yes' 이벤트, 액티비티 종료
alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish(); // 액티비티 종료
}
});
// 대화상자 'No' 이벤트, Ok 문구 출력
alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getApplicationContext(), "Ok", Toast.LENGTH_LONG).show();
}
});
// 대화상자 버튼을 누르지 않으면 화면이 넘어가지 않게 설정
alert.setCancelable(false);
// 대화상자 화면에 표시
alert.show();
}
}
반응형