Android

[12일차] DialogFragment

openDatabase 2016. 8. 2. 10:32

다이얼로그 프래그먼트


다이얼로그 프래그먼트 상속해서 사용한다. 



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);
}
}