어제는 PopupWindow를 통해 main이 되는 View 에 말풍선처럼 popup을 띄우는 방식을 살펴보았다. 그런데 기존 App.들에서는 안내 메시지 창 자체가 따로 위에 뜨는 느낌이었던 터라 뭐 다른게 있나 싶어 찾아봤더니, AlertDialog를 사용한 것이었다. 이번엔 AlertDialog.builder를 통해 메시지 창을 만들어 동작시켜 보자.
1. 목적 : AlertDialog 의 사용법을 익히고 App.에 적용해 보자.
2. 개발 환경
- PC : Windows 7, Android Studio 1.4.1(64-bit)
- Phone : LG G pro Lollipop(API 21)
3. 참고자료
1) Android Developers - AlertDialog Reference (http://developer.android.com/reference/android/app/AlertDialog.html)
2) 남시언의 문화지식탐험 - AlertDialog 생성 예제 (http://namsieon.com/313)
4. 과정
1) 어제와 같이 AlertDialog를 띄울 ImageButton와 return 여부를 확인할 TextView를 activity_main.xml 에 생성한다. AlertDialog에서 돌아왔을 때 return 여부를 보여주기 위해서 TextView의 text는 비워둔다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ImageButton
android:id="@+id/imgbtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp"
android:src="@mipmap/ic_launcher"/>
<TextView
android:id="@+id/returnval"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/imgbtn"/>
</RelativeLayout>
2) App.의 전체적인 activity를 구성하는 MainActivity.java에 위의 ImageButton과 연결할 변수를 생성 및 연결하고, 해당 Button을 Click하면 AlertDialog 가 나타나도록 다음과 같이 설계한다.
public ImageButton imgBtn;
public TextView returnVal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgBtn = (ImageButton)findViewById(R.id.imgbtn); // ImageButton의 activity 내 생성 및 연결
returnVal = (TextView)findViewById(R.id.returnval);
imgBtn.setOnClickListener(new View.OnClickListener() { // ImageButton을 Click시 AlertDialog가 생성되도록 아래과 같이 설계
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); // AlertDialog를 띄울 activity를 argument로 지정해야 한다.
builder.setTitle("앱을 종료하시겠습니까?"); // AlertDialog.builder를 통해 Title text를 입력
builder.setPositiveButton("네", new DialogInterface.OnClickListener() { // AlertDialog.Builder에 Positive Button을 생성
@Override
public void onClick(DialogInterface dialog, int which) {
finish(); // App.의 종료. Activity 생애 주기 참고
}
});
builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() { // AlertDialog.Builder에 Negative Button을 생성
@Override
public void onClick(DialogInterface dialog, int which) {
returnVal.setText("앱을 종료하지 않고 돌아왔음");
dialog.dismiss(); // "아니오" button이 받은 DialogInterface를 dismiss 하여 MainView로 돌아감
}
});
AlertDialog dialog = builder.create(); // 위의 builder를 생성할 AlertDialog 객체 생성
dialog.show(); // dialog를 화면에 뿌려 줌
}
});
}
}
(위의 code 실행 결과)
'개발일지' 카테고리의 다른 글
[Android 기초] Application의 Activity Life Cycle(Activity 생애 주기) 01 - 이론 (0) | 2015.12.08 |
---|---|
[Android 기초] AlertDialog를 활용한 알림창 띄우기 02 - Custom AlertDialog (0) | 2015.12.08 |
[Android 기초] PopupWindow 활용하기 (0) | 2015.12.07 |
[Android 기초] 특정 Directory 내 Image들에 대한 gallery 만들기 - Gallery 사용 (5) | 2015.12.04 |
[Android 기초] ExpandableListView의 이해 및 사용 (3) | 2015.11.30 |