반응형
안녕하세요. 돼지왕 왕돼지입니다.
오늘은 Dialog에 대한 모든 것이라는 주제로 한번 이야기해보겠습니다.
Dialog 생성 ( 대화상자 생성 )
<APIs>
AlertDialog.Builder(Context ocntext)
AlertDialog.Builder setMessage (CharSequence message)
AlertDialog.Builder setTitle (CharSequence title)
AlertDialog.Builder setIcon (int iconId)
AlertDialog show()
AlertDialog create()
AlertDialoglBuilder setCancelable (boolean cancelable) // back 버튼으로 닫을 수 없다.
setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
setNeutralButton(CharSequence text, DialogInterface.OnClickListener listener)
setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener) AlertDialoglBuilder setCancelable (boolean cancelable) // back 버튼으로 닫을 수 없다.
<example 1>
AlertDialog.Builder bld = new AlertDialog.Builder(.this);
bld.setTitle("Notice");
bld.setMessage("This is Dialog box test");
bld.setIcon(R.drawable.icon);
bld.show();
<example 2>
new AlertDialog.Builder(.this)
.setTitle("Notice")
.setMessage("This is Dialog box test")
.setIcon(R.drawable.icon)
.setPositiveButton("Close", new DialogInterface.OnClickListerner(){
public void onClick(DialogInterface dialog, int whichButton){
// To Do
}
});
.show();
cf) DialogInterface.OnClickListener() 를 null 로 주면 기본동작인 "닫기"를 수행
cf2) whichButton 은 DialogInterface.BUTTON1 , BUTTON2, BUTTON3 으로 매핑
Dialog 미리 생성하기. ( activity 에 귀속된 녀석 )
: 기본적 대화상자들은 화면에서 사라지면 가비지 컬렉터에 의해 자동으로 해제됩니다.
하지만 복잡한 모양의 대화상자 (예를 들면 커스톰 대화상자)의 경우 반응성이 나빠지기 쉽죠.
<APIs>
void showDialog(int id)
void dismissDialog (int id)
void removeDialog (int id)
Dialog onCreateDialog (int id)
void onPrepareDialog (int id, Dialog dialog)
<example>
final static int SampleDialog = 0;
final static int QuestionDialog = 1;
showDialog(SampleDialog);
showDialog(QuestionDialog);
protected Dialog onCreateDialog(int id){
switch (id){
case SampleDialog:
return newAlertDialog.Builder(.this)
.setTitle("Notice")
.setMessage("DialogBox is opened")
.setIcon(R.drawable.icon)
.setPositiveButton("Close", null)
.create();
case QuestionDialog:
return new AlertDialog.Builder(.this)
.setTitle("Question")
.setMessage("Are you a student?")
.setPositiveButton("Yes", null)
.setNegativeButton("No", null)
.create();
}
return null;
}
protected void onPrepareDialog (int id, Dialog dialog){
super.onPrepareDialog(id, dialog);
switch (id){
case SampleDialog:
break;
case QuestionDialog:
Calendar calendar = Calendar.getInstance();
String stime = String.format("%dhour %dminute %dsecond",
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
calendar.get(Calendar.SECOND));
dialog.setTitle(stime);
break;
}
}
List Dialog
<APIs>
-> 첫번째 param : 사용자에게 보여줄 목록.
setItems (CharSequence[] items, DialogInterface.OnClickListener listener)
setItems (int itemsId, DialogInterface.OnClickListener listener)
-> List Item을 클릭하면 반응할 OnClickListener.
setSingleChocieItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)
setSingleChoiceItems (int itemsId, int checkedItem, DialogInterface.OnClickListener listener)
setISingleChoiceItems (ListAdapter adapter, int checkedItem, DialogInterface.OnClickListener listener)
setSingleChoiceItems (Cursor cursor, int checkedItem, String labelColumn, DialogInterface.OnClickListener listener)
-> 기본 check 를 안 주려면 checkedItem에 -1 값 입력
-> OnClickListener 를 null 로 주면 list를 클릭했을 때 선택만 되고 처리는 확인, 취소에서 해주는 형태가 됨.
setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
setMultiChoceItems (int itemsId, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
setMultiChocieItems (Cursor cursor, String isCheckedColumn, String labelColumn, DialogInterface.OnMultiChoiceClickListener listener)
void onClick (DialogInterface dialog, int which, boolean isChecked)
<example 1>
<java>
new AlertDialog.Builder(.this)
.setTitle("Select food")
.setIcon(R.drawable.icon)
.setItems(R.array.foods, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
String[] foods = getResources().getStringArray(R.array.foods);
TextView text = (TextView)findViewById(R.id.text);
text.setText("Selected food = " + foods[which]);
}
})
.setNegativeButton("Cancel", null)
.show();
<xml>
<string-array name="foods">
<item>Noodle</item>
<item>Rice</item>
<item>Hamburger</item>
</string-array>
<example 2>
int mSelect = 0;
new AlertDialog.Builder(.this)
.setTitle("Select food")
.setIcon(R.drawable.icon)
.setSingleChoiceItems(R.array.foods, mSelect, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
mSelect = which;
}
}
.setPositiveButton("Ok", new DIalogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
// To Do
}
}
.setNegativeButton("Cancel", null)
.show();
<example 3>
boolean[] mSelect = {false, false, false};
new AlertDialog.Builder(.this)
.setTitle("Select food")
.setIcon(R.drawable.icon)
.setMultiChocieItems(R.array.foods, mSelect, new DialogInterface.OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialog, int which, boolean isChecked){
mSelect[which] = isChecked;
}
})
.setPositiveButton("Ok", new DIalogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
// To Do
}
}
.setNegativeButton("Cancel", null)
.show();
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] Activity 의 상태 저장. Object 형태로. ( Serializable 과 Parcelable 을 이용한 방법 ) (0) | 2012.02.19 |
---|---|
[Android/안드로이드] Tab Activity 의 모든 것. (0) | 2012.02.18 |
[Android/안드로이드] Custom Dialog & Popup Window. (0) | 2012.02.18 |
[Android/안드로이드] Looper 에 대해 알아봅시다. (0) | 2012.02.18 |
[Android/안드로이드] Handler 사용하기. (0) | 2012.02.18 |
댓글