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 |
댓글