[12일차] DialogFragment
다이얼로그 프래그먼트
다이얼로그 프래그먼트 상속해서 사용한다.
onCreateDialog메소드에서
다이얼로그 생성해서
리턴하면 된다.
setCancelable() 을 가지고 있다.
dismiss() 함수 호출하면 알아서 해준다.
간단하게 띄우기
프래그먼트에 라이프사이클 함수를 똑같이 갖는다.
백스택을 사용해서 활용할 수 있다.
package com.chapark.mydialogfragment;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
/**
* A simple {@link Fragment} subclass.
*/
public class DialogFragment extends android.support.v4.app.DialogFragment {
public DialogFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
String[] items = {"item 1", "item 2", "item 3", "item 4", "item 5", "item 6"};
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
// builder.setMessage();
builder.setTitle("Dialog Fragment");
builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
String message = items[i];
SecondDialogFragment f = SecondDialogFragment.newInstance(message);
Fragment old = getFragmentManager().findFragmentByTag("dialog"); //backStack을 사용하여 차일드를 선택한 후 안사라지게 끔 하는처리
FragmentTransaction ft = getFragmentManager().beginTransaction();
if (old != null) {
ft.remove(old);
}
ft.addToBackStack(null);
f.show(ft, "childfragment"); ////////////////////////////////////////여기까지 backStack
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getContext(), "OK click", Toast.LENGTH_SHORT).show();
}
});
return builder.create();
}
@Override
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
}
}