2010/04/15
[Android Dev.]AlertDialog 활용하기
AlertDialog 는 사용자에게 메세지나 경고를 알리기 위한 기능으로 Android 에서 지원하는 Dialog 이다. Toast 와는 다르게 Dialog 라서 Activity의 Focus를 가져간다.
대부분의 Dialog 는 Activity의 onCreateDialog() 함수에서 생성하는 것을 권장하고 있다. onCreateDialog() 에서 생성된 Dialog 는 Activity 에서 관장하고 있으며 Activity 객체들()을 상속 받는다.
showDialog() 가 호출되면 생성되지 않은 Dialog의 경우 onCreateDialog() 함수에서 생성이 되고 이후에 호출이 되어질 때에는 새로 생성하지 않고 기존 인스턴스를 그대로 이용한다. 다이얼로그가 호출되기 전에 Dialog 에 변화를 주려면 onPrepareDialog() 함수에서 처리 한다. onCreateDialog 에서 생성한 Dialog는 Activity 에서 항상 갖고 있는 객체로 더이상 필요가 없을 경우에는 시스템 시소스 확보를 위해 removeDialog() 를 호출하여 제거해 주는 것이 좋다.
간단하게 사용자에게 경고를 하기 위한 Dialog 라면 시스템이 관리하지 않고 그냥 간단하게 사용하는 것이 리소스 관리 측면에서 더 유용해 보인다.
AlertDialog 는 사용자에게 아주 간단하고 쉽게 경고 메세지를 보여 줄 수 있는 Dialog 이다. 하지만 Custom View 까지 지원하여 아주 많은 것을 표현해 줄 수 있다.
AlertDialog 는 아래의 요소를 갖을 수 있다.
AlertDialog 가 갖을 수 있는 모든 요소는 필요 요소가 없다. 모든 요소를 제거하고 AlertDialog 를 호출하면 Activity의 Focus를 가져오고 화면에는 아무것도 표시가 되지 않는다.
AlertDialog 를 생성하는 방법은 AlertDialog.Builder 클래스를 이용하면 된다.
아주 간단한 AlertDialog 생성하기
구성 요소중 Icon 과 Title 을 없애면 두 영역이 사라지지만 Icon 없이 Title 을 지정하면 기본 Icon 이 표시된다.
AlertDialog 에서 제공하는 ListView 활용하기
AlertDialog.Builder 에 있는 setSingleChoiceItems 함수를 이용하며 AlertDialog 에서 제공하는 ListView 를 사용할 수 있다.
Custom View 를 얹은 AlertDialog
Custom View XML
<
Original Post : http://neodreamer-dev.tistory.com/411
대부분의 Dialog 는 Activity의 onCreateDialog() 함수에서 생성하는 것을 권장하고 있다. onCreateDialog() 에서 생성된 Dialog 는 Activity 에서 관장하고 있으며 Activity 객체들()을 상속 받는다.
showDialog() 가 호출되면 생성되지 않은 Dialog의 경우 onCreateDialog() 함수에서 생성이 되고 이후에 호출이 되어질 때에는 새로 생성하지 않고 기존 인스턴스를 그대로 이용한다. 다이얼로그가 호출되기 전에 Dialog 에 변화를 주려면 onPrepareDialog() 함수에서 처리 한다. onCreateDialog 에서 생성한 Dialog는 Activity 에서 항상 갖고 있는 객체로 더이상 필요가 없을 경우에는 시스템 시소스 확보를 위해 removeDialog() 를 호출하여 제거해 주는 것이 좋다.
간단하게 사용자에게 경고를 하기 위한 Dialog 라면 시스템이 관리하지 않고 그냥 간단하게 사용하는 것이 리소스 관리 측면에서 더 유용해 보인다.
AlertDialog 는 사용자에게 아주 간단하고 쉽게 경고 메세지를 보여 줄 수 있는 Dialog 이다. 하지만 Custom View 까지 지원하여 아주 많은 것을 표현해 줄 수 있다.
AlertDialog 는 아래의 요소를 갖을 수 있다.
- Icon
- Title
- Message or ListView (두가지를 함께 지원하지 않음)
- Custom View
- Button (최대 3개)
Message 를 갖는 AlertDialog | ListView 를 갖는 AlertDialog |
AlertDialog 가 갖을 수 있는 모든 요소는 필요 요소가 없다. 모든 요소를 제거하고 AlertDialog 를 호출하면 Activity의 Focus를 가져오고 화면에는 아무것도 표시가 되지 않는다.
AlertDialog 를 생성하는 방법은 AlertDialog.Builder 클래스를 이용하면 된다.
아주 간단한 AlertDialog 생성하기
간단한 AlertDialog
AlertDialog alert = new AlertDialog.Builder( this )
.setIcon( R.drawable.icon )
.setTitle( "AlertTitle" )
.setMessage( "AlertMessage" )
.setPositiveButton( "OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
})
.show();
구성 요소중 Icon 과 Title 을 없애면 두 영역이 사라지지만 Icon 없이 Title 을 지정하면 기본 Icon 이 표시된다.
Icon과 Title을 제거한 AlertDialog | Icon 없이 Title 만 지정한 AlertDialog |
AlertDialog 에서 제공하는 ListView 활용하기
AlertDialog.Builder 에 있는 setSingleChoiceItems 함수를 이용하며 AlertDialog 에서 제공하는 ListView 를 사용할 수 있다.
ListView를 갖는 AlertDialog
String[] strItems = { "Alert Item 1", "Alert Item 2", "Alert Item 3" };
AlertDialog alert = new AlertDialog.Builder( this )
.setIcon( R.drawable.icon )
.setTitle( "AlertTitle" )
.setPositiveButton( "OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
})
.setNeutralButton( "Neutral", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
})
.setNegativeButton( "Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
})
.setSingleChoiceItems(strItems, -1, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
String msg = "";
switch ( which )
{
case 0: msg = "Item 1 Selected"; break;
case 1: msg = "Item 2 Selected"; break;
case 2: msg = "Item 3 Selected"; break;
}
Toast.makeText( MyDialog.this, msg, Toast.LENGTH_SHORT ).show();
}
})
.show();
Custom View 를 얹은 AlertDialog
Custom View 를 얹은 AlertDialog
Custom View XML
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TableRow>
<ImageView
android:id="@+id/IVIcon1"
android:src="@drawable/icon"
/>
<TextView
android:id="@+id/TVAndroid1"
android:text="Android 1"
/>
</TableRow>
<TableRow>
<ImageView
android:id="@+id/IVIcon1"
android:src="@drawable/icon"
/>
<TextView
android:id="@+id/TVAndroid1"
android:text="Android 1"
/>
</TableRow>
</TableLayout>
LayoutInflater layout2 = getLayoutInflater();
View v2 = layout2.inflate( R.layout.alert_custom_view, null );
AlertDialog alert = new AlertDialog.Builder( this )
.setIcon( R.drawable.icon )
.setTitle( "AlertTitle" )
.setMessage( "AlertMessage" )
.setPositiveButton( "OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
})
.setNeutralButton( "Neutral", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
})
.setNegativeButton( "Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
})
.setView( v2 )
.show();
<
Original Post : http://neodreamer-dev.tistory.com/411
Labels:
AlertDialog
,
Android
,
Android Development
,
TistoryOldPost
,
안드로이드
,
안드로이드 개발
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment