티스토리 뷰

  이전에 백 버튼(뒤로가기 버튼) 클릭 시 한 번 더 의견을 물어 일정 시간 안에 백 버튼을 다시 누르면 어플이 종료되는 예제를 알아보았습니다.

[안드로이드] 뒤로가기 버튼 이벤트 예제


  이러한 예제를 사용한 곳도 있지만 종료를 위해 뒤로가기 버튼을 누르면 팝업창이 뜨면서 광고 또는 공지가 정말 종료할 것이냐는 말과 함께 종료나 취소를 선택할 수 있게 됩니다. 여기서는 광고나 공지를 올리는 건 아니지만 종료를 위해 백 버튼을 누르면 팝업창에서 선택할 수 있는 형태를 AlertDialog를 통해 간단히 만들어 보겠습니다.


AlertDialog를 통해 팝업창을 띄어보자

  팝업창을 띄우는 방법은 여러 가지가 있지만 사용이 간단하면서도 구글에서 추구하는 Material Design으로 디자인 되어있으므로 다른것은 신경쓸필요가 없는 AlertDialog를 통해 팝업창을 만들어 보겠습니다. 우선 다음과 같이 Builder를 만들어주어야 합니다.


1
AlertDialog.Builder alert_ex = new AlertDialog.Builder(this);
cs

  AlertDialog를 만들어주는 Builder를 만들었습니다. 이제 정말 간단하게 Builder를 통해 팝업창의 메세지를 만들어보겠습니다.

1
alert_ex.setMessage("정말로 종료하시겠습니까?");
cs


  이제 '종료' 버튼과 '취소' 버튼을 만들어 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
 alert_ex.setNegativeButton("취소"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 내용(취소시 할 일이 없기 때문에 아무일도 하지 않게 아무것도 적지 
                         않았습니다)
            }
        });
 alert_ex.setPositiveButton("종료"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finishAffinity();
            }
        });
cs


  Negative와 Positive의 차이는 Negative가 왼쪽에 오는 버튼이되고 Positive가 오른쪽에 오는 버튼이 됩니다. 메시지하고 버튼을 만들어 주었는데 생각해보니 제목을 만들어 주지 않았습니다. 제목을 만들겠습니다.


1
alert_ex.setTitle("예제어플 알림!");
cs


  setTitle을 통해 간단하게 제목을 만들어 주었습니다. 이제 Builder를 실제 AlertDialog에 등록해주겠습니다.


1
AlertDialog alert = alert_ex.create();
cs


  앞부분은 AlerDialog이고 뒷 부분의 alert_ex는 Builder입니다. 이제 AlertDialog를 보여주기만 하면됩니다.


1
alert.show();
cs


  잘 만들어졌나 확인해 보겠습니다.



  잘 되는 것을 볼 수 있네요!! 예제를 만들어야 해서 매번 alert_ex.~~~로 코딩을 했지만 실제로는 다음과 같이도 사용할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
AlertDialog.Builder alert_ex = new AlertDialog.Builder(alertActivity);
alert_ex.setTitle("예제어플 알림!")
        .setNegativeButton("취소"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 내용(취소시 할 일이 없기 때문에 아무일도 하지 않게 아무것도 적지 
                         않았습니다)
            }
        })
        .setPositiveButton("종료"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finishAffinity();
            }
        });
 
AlertDialog alert = alert_ex.create();
alert.show();
cs


  마지막에만 ; 을 붙이고 나머지는 '.'으로 이어서 사용할 수 있습니다. 또한 몇 가지 다른 옵션들도 있으니 필요하시면 이용하시면 됩니다.! 전체 코드는 다음과 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MainActivity extends AppCompatActivity{
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_layout);
    }
 
 
    @Override
    public void onBackPressed() {
        AlertDialog.Builder alert_ex = new AlertDialog.Builder(this);
        alert_ex.setMessage("정말로 종료하시겠습니까?");
 
        alert_ex.setPositiveButton("취소"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
 
            }
        });
        alert_ex.setNegativeButton("종료"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finishAffinity();
            }
        });
        alert_ex.setTitle("예제어플 알림!");
        AlertDialog alert = alert_ex.create();
        alert.show();
 
    }
}
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday