티스토리 뷰

Android Dialog Fragment

  • Android에서 팝업창을 통해서 간단하게 사용자의 입력을 받을 때 Dialog 라는 컴포넌트를 사용합니다.
    • 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");

관련글

 

[Android] 폰 내에 저장되어 있는 음악 데이터 가져오기

저장된 음악 데이터 가져오는 방법 이번 시간에는 기기 내에 저장되어 있는 음악들의 데이터를 가져오는 방법에 대해서 알아보도록 하겠습니다. 우선 코드는 아래와 같습니다. ContentResolver를 통해서 기기 내에..

jinseongsoft.tistory.com

 

[Android] Action Bar Hide가 안될 때( getActionBar() 가 null 일 때)

Action Bar Hide가 안될 때 동적으로 ActionBar를 가리기 위해서 hide() 를 많이 사용하는데요. 아래와 같은 코드를 많이 사용합니다. 이때 숨겨지지가 않을 때가 있습니다. 1 getActionBar().hide(); 원인은 바로..

jinseongsoft.tistory.com

 

[Android] 안드로이드 6.0 이상 Wifi Scanning 하여 Dialog 에 보여주기

Wifi Scanning 이번 시간에는 Android 에서 Wifi Scanning을 하여 결과를 Dialog 에 띄워주는 방법에 대해서 알아보겠습니다. 일단 Wifi를 Scanning하는 방법은 Wifi Manager Class 를 이용하는 방법이 있습니다.W..

jinseongsoft.tistory.com

 

[Android] Jsoup 을 이용한 영어 단어 정보 Parsing

Jsoup 을 이용한 영어 단어 정보 Parsing 이번에는 Android 에서 Jsoup 을 이용하여 다음 단어사전 Page를 Parsing 하여 단어의 정보들을 가져오는 방법에 대해서 알아보겠습니다. 일단 Jsoup을 사용하기 위해서는..

jinseongsoft.tistory.com

 

(Android) Tmap 경로 API를 통해 (출발, 도착)경로 Point 리스트 가져오기

Android Tmap 경로 API 프로젝트 진행중 걸은 거리를 추적해서 이동 경로를 지도상에 선 형태로 그려주는 기능을 구현하려고 했다. 처음에는 GPS 값만 가져와 Google Map에서 지원해주는 Polyline 형태로 그려주는..

jinseongsoft.tistory.com

 

(Android) Google Map 이동한 거리 선(polyline) 으로 그리기

Android Google Map Polyline Google Map 라이브러리를 사용하여 지도 관련 프로젝트를 진행하고 있습니다. GPS를 통해 걸음을 체크하는 서비스 걸음 시작 버튼을 누른 후부터 특정 주기로 GPS를 기록하여 이동한..

jinseongsoft.tistory.com


끝으로

이 글이 도움이 되었다면, 하단의 Google 광고 👎👎👎 한번씩 클릭 부탁 드립니다. 🙏🙏🙏

광고 클릭은 많은 힘이 됩니다! 

 

 

 

 

반응형
댓글