Programming Language/Android Programming
대화상자[라디오]
1. 대화상자
▶ 사용자에게 주요사항을 알려주고 그에 따른 선택을 하도록 하는 것을 말한다.
1) 설정순서
[1] 대화상자 생성
[2] 용도에 따른 설정
[3] 대화상자 화면 출력
2) 클래스와 메소드
[1] AlertDialog.Builder 클래스로 생성한다.
[2] setTitle( ) -> 제목설정
[3] setMessage( ) -> 내용 입력
[4] setIcon( ) -> 아이콘 설정
[5] setPositiveButton( ) -> OK버튼
[6] setNegativeButton( ) -> Cancel버튼
[7] setItems( ) -> 목록출력
[8] setSingleChoiceItems( ) -> 라디오버튼 목록 출력
[9] setMultiChoiceItems( ) -> 체크박스 목록 출력
[10] show( ) -> 나타내기
2) activity_main.xml 설정
▶ ActiveMain.xml을 위와 같이 설정해준다.
▶ gravity를 center로 부여하여 버튼을 가운대로 배치한다.
3) MainActivity.java 소스
package com.example.d4tai1.pro20181022a_1;
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.Toast;
public class MainActivity extends AppCompatActivity {
Button btnDialog;
//필드로 위에 적어주어야 모든영역에서 접근이 가능하다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};
btnDialog = (Button) findViewById(R.id.btnDialog);
btnDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("대화상자 제목");
dlg.setMessage("내용입니다.");
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setNegativeButton("취소", null);
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
}
});
//파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
//모든 리스너는 인터페이스
dlg.show();
}
});
}
}
package com.example.d4tai1.pro20181022a_1;
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.Toast;
public class MainActivity extends AppCompatActivity {
Button btnDialog;
//필드로 위에 적어주어야 모든영역에서 접근이 가능하다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};
btnDialog = (Button) findViewById(R.id.btnDialog);
btnDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("대화상자 제목");
//dlg.setMessage("내용입니다.");
dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// int which 가 클릭한 배열의 index값이다.
btnDialog.setText(versionArray[which]);
}
});
//.setMessage() 메소드와 .setItems() 는 겹치기 때문에 충돌이 발생한다.
//파라미터 = 배열명, 해당하는 것의 이벤트 내용
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setNegativeButton("취소", null);
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
}
});
//파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
//모든 리스너는 인터페이스
dlg.show();
}
});
}
}
package com.example.d4tai1.pro20181022a_1;
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.Toast;
public class MainActivity extends AppCompatActivity {
Button btnDialog;
//필드로 위에 적어주어야 모든영역에서 접근이 가능하다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};
btnDialog = (Button) findViewById(R.id.btnDialog);
btnDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("대화상자 제목");
//dlg.setMessage("내용입니다.");
/*
dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// int which 가 클릭한 배열의 index값이다.
btnDialog.setText(versionArray[which]);
}
});
//.setMessage() 메소드와 .setItems() 는 겹치기 때문에 충돌이 발생한다.
//파라미터 = 배열명, 해당하는 것의 이벤트 내용
*/
dlg.setSingleChoiceItems(versionArray, -1, new DialogInterface.OnClickListener() {
//default값으로 아무것도 체크를 하지 않고 확인을 누를 경우는 -1을 반환한다.
//결과적으로 아무런 일도 일어나지 않는다.
@Override
public void onClick(DialogInterface dialog, int which) {
btnDialog.setText(versionArray[which]);
}
})
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setNegativeButton("취소", null);
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
}
});
//파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
//모든 리스너는 인터페이스
dlg.show();
}
});
}
}
package com.example.d4tai1.pro20181022a_1;
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.Toast;
public class MainActivity extends AppCompatActivity {
Button btnDialog;
//필드로 위에 적어주어야 모든영역에서 접근이 가능하다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String [] versionArray = new String[] {"마시멜로", "누가", "오레오"};
final boolean [] checkArray = new boolean[]{true, false, true};
btnDialog = (Button) findViewById(R.id.btnDialog);
btnDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("대화상자 제목");
//dlg.setMessage("내용입니다.");
/*
dlg.setItems(versionArray, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// int which 가 클릭한 배열의 index값이다.
btnDialog.setText(versionArray[which]);
}
});
//.setMessage() 메소드와 .setItems() 는 겹치기 때문에 충돌이 발생한다.
//파라미터 = 배열명, 해당하는 것의 이벤트 내용
*/
/*
dlg.setSingleChoiceItems(versionArray, -1, new DialogInterface.OnClickListener() {
//default값으로 아무것도 체크를 하지 않고 확인을 누를 경우는 -1을 반환한다.
//결과적으로 아무런 일도 일어나지 않는다.
@Override
public void onClick(DialogInterface dialog, int which) {
btnDialog.setText(versionArray[which]);
}
});
*/
dlg.setMultiChoiceItems(versionArray, checkArray, new DialogInterface.OnMultiChoiceClickListener() {
String strValue = "";
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
for (int i = 0; i < checkArray.length; i++) {
if (checkArray[i]) {
strValue += versionArray[i] + " ";
}
}
btnDialog.setText(strValue);
//체크는 다 되지만
//setItems의 특성 = 맨 마지막에 클릭한 것이 나오게된다.
}
});
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setNegativeButton("취소", null);
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "확인을 누르셨네요!!", Toast.LENGTH_SHORT).show();
}
});
//파라미터 = 버튼 이름, 확인했을 때 나올 내용(리스너 인터페이스)
//모든 리스너는 인터페이스
dlg.show();
}
});
}
}
4) 시연
'Programming Language > Android Programming' 카테고리의 다른 글
| 내장메모리 접근 (0) | 2018.11.05 |
|---|---|
| 대화상자[입력] (0) | 2018.10.27 |
| 메세지 띄우기 (0) | 2018.10.09 |
| 다중메뉴 (0) | 2018.10.09 |
| 메뉴 라디오버튼 (3) | 2018.10.09 |
댓글