티스토리 뷰
대화상자는 다음과 같이 팝업되는 박스를 일컫습니다.
내부에서 텍스트를 입력받거나, 체크박스를 다는 등 다양한 기능 구현이 가능합니다.
1. 기본 대화상자
가장 기본적인 대화상자 입니다.
간단한 소스로 구현이 가능합니다.
basic = (Button)findViewById(R.id.basic); //기본 대화상자 버튼
basic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//호출하고자 하는 activity 입력
AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this);
dlg.setTitle("기본대화상자");
dlg.setIcon(R.mipmap.ic_launcher);
dlg.setMessage("이것은 기본 대화상자입니다.");
dlg.setNegativeButton("닫기",null); // null 대신 onClickListener 생성 가능
dlg.setPositiveButton("확인",null); // null 대신 onClickListener 생성 가능
dlg.show();
}
});
2. 라디오버튼 대화상자
라디오 버튼은 중복선택이 되지 않는 버튼입니다.
radio = (Button)findViewById(R.id.radio);
radio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String[] data = {"치킨","스파게티"}; //final 로 해야지 접근가능
AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this);
final String[] whichItem = {null};
dlg.setTitle("라디오 대화상자");
dlg.setIcon(R.mipmap.ic_launcher);
//라디오 버튼 장착(setSingleChoiceItems
dlg.setSingleChoiceItems(data, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
whichItem[0] = data[which]; //선택한 아이템을 전역 변수에저장
}
});
dlg.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), whichItem[0] + "선택하셨습니다.", Toast.LENGTH_SHORT).show();
}
});
dlg.show();
}
});
3. 체크박스 대화상자
중복선택이 가능한 체크박스를 이용한 대화상자 입니다.
checkbox = (Button)findViewById(R.id.checkbox);
checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String checkstr[] = {"피아노", "독서", "영화보기", "코딩하기"};
final boolean checked[] = {false,true,false,true};
AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this);
dlg.setTitle("취미를 고르세요");
//체크박스 장착(setMultipleChoiceItems)
dlg.setMultiChoiceItems(checkstr, checked, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
//Toast.makeText(getApplicationContext(),which,Toast.LENGTH_SHORT).show();
Log.d("Debug","asdfsadfsdf" + Integer.toString(which));
checked[which] = isChecked;
}
});
dlg.setPositiveButton("선택완료", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String str = "";
for(int i = 0; i<checked.length;i++){
if(checked[i]) {
str = str + "," + checkstr[i];
}
}
Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show();
}
});
dlg.show();
}
});
4. 사용자정의 대화상자
팝업할 대화상자의 레이아웃을 직접 제작해 사용하는 대화상자입니다.
레이아웃소스
//dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox"/>
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="This is for practice"/>
</LinearLayout>
액티비티 소스
custom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//View에 제작한 레이아웃을 탑재후 대화상자에 setView로 붙인다.
View dlgview = View.inflate(alertAcitivy.this, R.layout.dialog,null);
final EditText editText = (EditText)dlgview.findViewById(R.id.editText);
AlertDialog.Builder dlg = new AlertDialog.Builder(alertAcitivy.this);
dlg.setPositiveButton("확인",null);
dlg.setTitle("사용자 정의 대화상자");
dlg.setView(dlgview);
dlg.show();
}
});
'Development > Android' 카테고리의 다른 글
16. ListView(리스트뷰) (0) | 2018.05.05 |
---|---|
15. 커스텀위젯 (0) | 2018.05.05 |
13. Message(Toast,SnackBar) (0) | 2018.05.05 |
12 . TabHost (0) | 2018.05.05 |
11. 레이아웃전환, Timepicker, Datepicker,chronometer, Switch (0) | 2018.05.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- sequelize
- Algorithm
- Android Studio
- ausg
- Linux
- Confustion Matrix
- #AWS
- rl
- commands
- Preprocessing
- branch
- Reinforcement Learning
- #ausg
- git
- System
- OS
- gitgnore
- Reinforcement Learniing
- Gradient descent algorithm
- 강화학습
- #handsonlab
- MDP
- 통계적 가설 검정
- #ab
- AWS
- MySQL
- Markov Decision Process
- Android
- Memory segmetation
- p-value
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함