Custom Dialog Fragment

依然范特西╮ 提交于 2019-12-01 06:08:22
Philippe A

If the activity in which you want to open the DialogFragment extends FragmentActivity, you should execute:

PicturePickerFragment dialog = new PicturePickerFragment();
dialog.show(getSupportFragmentManager(), "YourDialog");

Also you need to inflate your dialog layout file in the method onCreateDialog of your dialog fragment class.

Using AlertDialog.Builder you can achieve all this easily, e.g.

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

LayoutInflater inflater = getActivity().getLayoutInflater();

// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.dialoglayout, null))
 .setTitle(R.string.dialog_title)
 .setPositiveButton(R.string.pos_button, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // call the method on the parent activity when user click the positive button
    }
})
 .setNegativeButton(R.string.neg_button, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        // call the method on the parent activity when user click the negative button
    }
});
return builder.create();

There are many examples on http://developer.android.com/reference/android/app/DialogFragment.html

Pankaj

There are different ways you can create your dialog either using OnCreateView method or using OnCreateDialog method if you are extending the DialogFragment class and so the implementation goes in a different way for both.

You should return your Dialog instance from OnCreateDialog method.

How to show the dialog in a Activity

 FragmentTransaction ft = getFragmentManager().beginTransaction();
 Fragment prev = getFragmentManager().findFragmentByTag("YourFragmentID");

 if (prev != null) {
        ft.remove(prev);
    }
 ft.addToBackStack(null);

 PicturePickerFragment pf = new PicturePickerFragment();
 pf.show();

May be you can refer to this link which is a nice example from official AndroidDeveloper's site.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!