대화상자는 사용자에게 간단한 메시지를 전달 후 "예", "아니오"와 같은 입력을 선택지로 준다. 대화상자를 띄우려면 AlertDialog.Builder 클래스로 대화상자 빌더 객체를 만든 후 타이틀 설정, 메시지 설정 및 각각의 버튼을 설정하고 클릭 이벤트 처리 리스너를 달아주면 된다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼을 누르면 대화상자가 뜹니다."
android:layout_gravity="center_horizontal"
android:textSize="20dp"
android:layout_marginTop="50dp"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="띄우기"
android:textSize="20dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="50dp"/>
</LinearLayout>
버튼을 누르면 대화상자가 뜬다. 텍스트뷰의 내용은 대화상자에서 어떤 버튼을 클릭했는지 표시하기 위한 용도로 만들었다.
package io.swnomad.sampledialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showMessage();
}
});
}
private void showMessage(){
AlertDialog.Builder builder = new AlertDialog.Builder(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) {
textView.setText("\"예\" 버튼이 눌렸습니다.");
}
});
//아니오 버튼 추가
builder.setNeutralButton("취소", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
textView.setText("\"취소\" 버튼이 눌렸습니다.");
}
});
//취소 버튼 추가
builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
textView.setText("\"아니오\" 버튼이 눌렸습니다.");
}
});
AlertDialog dialog = builder.create(); //대화상자 생성
dialog.show(); //대화상자 띄우기
}
}
앱을 실행하면 아래의 화면을 확인할 수 있다.
'안드로이드' 카테고리의 다른 글
(안드로이드) 27 - 시크바(SeekBar) (0) | 2020.05.18 |
---|---|
(안드로이드) 26 - 프로그레스바(ProgressBar) (0) | 2020.05.18 |
(안드로이드) 24 - 스낵바(SnackBar) (0) | 2020.05.18 |
(안드로이드) 23 - 토스트(Toast) 메시지 (0) | 2020.05.18 |
(안드로이드) 22 - 이벤트(Event) 처리 (0) | 2020.05.18 |