티스토리 뷰

다이얼로그 띄우기 (AlertDialog)

Dexx 2016. 3. 10. 12:28

다이얼로그 관련 정리


[일반적인 다이얼로그]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        new ContextThemeWrapper(getActivity(), android.R.style.Theme_DeviceDefault_Light));
        // 다이얼로그 디자인을 디바이스의 기본 형태를 사용하도록 처리
 
alertDialogBuilder.setTitle("타이틀");
alertDialogBuilder
        .setMessage("다이얼로그 내용")
        .setPositiveButton("확인"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 확인 시 처리 할 내용
            }
        })
        .setNegativeButton("취소"new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.setCanceledOnTouchOutside(true);
// 다이얼로그 외부 영역 터치 시 다이얼로그 닫기
alertDialog.show();
cs



[리스트형 다이얼로그]


string.xml

1
2
3
4
5
6
7
8
<string-array name="age">
    <item>10대</item>
    <item>20대</item>
    <item>30대</item>
    <item>40대</item>
    <item>50대</item>
    <item>60대이상</item>
</string-array>
cs

자바에다가 직접 처리해도 된다. 나중에 관리를 위해 string에 입력.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void sexDialog() {
    final String[] memberAge = getResources().getStringArray(R.array.age);
    // string.xml에 입력된 리스트를 불러옴
 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        new ContextThemeWrapper(getActivity(), android.R.style.Theme_DeviceDefault_Light));
 
    alertDialogBuilder.setTitle("나이");
    alertDialogBuilder.setItems(memberAge, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(getActivity(), memberAge[which], Toast.LENGTH_LONG).show();
            // 어느 놈이 선택되었는지 확인 하기 위해 토스트 띄움
            // memberAge[which]가 선택한 항목
        }
    });
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.setCanceledOnTouchOutside(true);
    alertDialog.show();
}
cs


검색해 보니 여러 방식의 리스트 다이얼로그가 있는데 이 방법이 제일 편한 듯...




댓글