티스토리 뷰
Android Dialog Fragment
- Android에서 팝업창을 통해서 간단하게 사용자의 입력을 받을 때 Dialog 라는 컴포넌트를 사용합니다.
- Dialog의 형태는 여러가지임
- 이때 Dialog를 Fragment 형태로 구현하는 방법에 대해서 알아보려고 합니다.
구현방법
- 기능은 간단하게 EditText에 값을 입력할 수 있도록 하고 확인, 취소 버튼을 추가해보겠습니다.
dialog_add_name.xml
- layout 입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="#FFFFBB33"
android:contentDescription="@string/app_name"
android:scaleType="center"
/>
<EditText
android:id="@+id/id_txt_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="4dp"
android:fontFamily="sans-serif"
android:hint="EditText에 미리 나타는 값 입니다."
/>
</LinearLayout>
AddNameDialogFragment.java
- layout을 구성하는 Fragemnent 클래스로 확인, 취소 버튼의 Action에 대해서 지정해주고 있습니다.
- NameInputListener는 외부에서 확인 버튼에 대한 이벤트 얻을 수 있는 Listener 인터페이스 입니다.
public class AddNameDialogFragment extends DialogFragment {
private EditText mName;
private NameInputListener listener;
public static AddNameDialogFragment newInstance(NameInputListener listener) {
AddNameDialogFragment fragment = new AddNameDialogFragment();
fragment.listener = listener;
return fragment;
}
public interface NameInputListener
{
void onNameInputComplete(String name);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.dialog_add_name, null);
mName = (EditText)view.findViewById(R.id.id_txt_input);
builder.setView(view)
.setPositiveButton("확인",
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int id)
{
listener.onNameInputComplete(mName
.getText().toString());
}
}).setNegativeButton("취소", null);
return builder.create();
}
}
사용 예
- 외부에서 AddNameDialogFragment를 생성하고 onNameInputComplete(확인 버튼 클릭이 되었을 때) 이벤트 처리를 해주고 있는 예 입니다.
AddNameDialogFragment dialog = AddNameDialogFragment.newInstance(new AddNameDialogFragment.NameInputListener() {
@Override
public void onNameInputComplete(String name) {
if(name != null) {
//name is Texted EditText
}
}
});
dialog.show(getFragmentManager(), "addDialog");
관련글
끝으로
이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏
광고 클릭은 많은 힘이 됩니다!
반응형
'프로그래밍 > Android' 카테고리의 다른 글
(Android) 광학 문자 인식 라이브러리 Tesseract OCR(tess-two) 사용방법 (2) | 2016.11.01 |
---|---|
(Android) 광학 문자 인식 라이브러리 Tesseract OCR 의 원리 (1) | 2016.11.01 |
(Android) Tmap 경로 API를 통해 (출발, 도착)경로 Point 리스트 가져오기 (3) | 2016.10.25 |
(Android) Activity Screen 세로 혹은 가로 화면 고정하는 방법 (0) | 2016.10.03 |
(Android) Google Map 이동한 거리 선(polyline) 으로 그리기 (17) | 2016.09.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 이펙티브
- JavaFX Window Close
- 배낭 여행
- 자바
- 자전거
- JavaFX Table View
- 배낭여행
- 이펙티브자바
- java
- Java UI
- 인텔리제이
- JavaFX
- 일본 배낭여행
- springboot
- 이펙티브 자바
- windows
- 방통대 과제물
- JavaFX 테이블뷰
- intelij
- 스프링부트
- 일본 자전거 여행
- 자전거 여행
- effective java
- TableView
- JavaFX 종료
- 일본여행
- 일본 여행
- git
- effectivejava
- 텐트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
글 보관함