알림 대화상자는 예, 아니오 같은 버튼을 누를 수 있는 대화상자이다.
package com.example.dialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
TextView textView = (TextView) findViewById(R.id.textView);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showMessage();
}
});
}
public 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 dialogInterface, int i) {
Snackbar.make(textView, "예 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
}
});
builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Snackbar.make(textView, "아니오 버튼이 눌렸습니다.",Snackbar.LENGTH_LONG).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
버튼을 만들고 리스너를 등록하고 showMessage 메소드를 호출하게 할것이다.
showMessage 메소드는 내가 따로 정의
showMessage 메소드 내에서는 AlertDialog.Builder 객체를 생성함 이게 대화상자다
set ~~ 메소드로 제목, 메시지 아이콘등 설정한다.
setPositive버튼은 긍정의미의 버튼을 의미한다.
버튼 이름과 버튼을 눌렀을 때 동작할 리스너를 등록한다.
리스너의 onClick 메소드를 오버라이딩 해서 정의해주면 예 버튼을 눌렀을때 어떻게 동작할 지 정할 수 있다.
긍정 버튼과 부정 버튼을 만든다.
버튼을 누르면 스낵바가 표시되게 할 건데 스낵바 추가를 위해 앞에서 배운 것처럼 라이브러리 추가를 먼저 해준다.
그리고 나서 Snackbar.make 메소드로 스낵바를 만든다
이 때 뷰 하나를 전달해 줘야 해서 textView를 xml파일에 하나 만들었다.
그리고 builder를 create 해야 대화상자가 생성되는 것이다.
create하고 show를 호출해서 화면에 보이도록 한다.
package com.example.nosnackbar;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showMessage();
}
});
}
public 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 dialogInterface, int i) {
Toast toast = Toast.makeText(getApplicationContext(),"예를 눌렀습니다",Toast.LENGTH_LONG);
toast.show();
}
});
builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast toast = Toast.makeText(getApplicationContext(),"아니오를 눌렀습니다",Toast.LENGTH_LONG);
toast.show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
이건 내가 snackbar를 사용하려니까 자꾸 오류가 나서 해결하려고 해도 안되고..
일단 토스트를 대신 이용한 코드이다.

이렇게 대화상자가 표시된다. 버튼을 누르면

이렇게 토스트 메시지가 표시된다.