如何在DialogFragment中使用自定义对话框?

时间:2018-04-08 19:42:44

标签: java android android-dialogfragment android-dialog

在我的应用程序中,我想在DialogFragment中使用自定义对话框。我可以将AlertDialog用于DialogFragment,但我想使用自定义对话框而不是AlertDialog

我将以下代码写入DialogFragment

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    View rootView = LayoutInflater.from(mActivity).inflate(R.layout.fragment_dialog_comment, null);

    initVar();
    initView(rootView);
    initFunctionality();

    return new AlertDialog.Builder(mActivity)
            .setView(rootView)
            .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    authorName = edtAuthorName.getText().toString().trim();
                    authorEmail = edtAuthorEmail.getText().toString().trim();
                    authorComment = edtAuthorComment.getText().toString().trim();

                    AppPreference.getInstance(mActivity).setString(PrefKey.KEY_EMAIL, authorEmail);
                    AppPreference.getInstance(mActivity).setString(PrefKey.KEY_NAME, authorName);

                    if (commentId == AppConstant.THIS_IS_COMMENT) {
                        sendComment(authorName, authorEmail, authorComment);

                    } else {
                        sendReply(authorName, authorEmail, authorComment);
                    }
                }
            })
            .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if (dialogInterface != null) {
                        dialogInterface.dismiss();
                    }
                }
            })
            .create();
}

我想使用下面的代码而不是上面AlertDialog

final Dialog dialog = new Dialog(mActivity);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.setContentView(R.layout.fragment_dialog_comment);
edtAuthorName = dialog.findViewById(R.id.edt_author_name);
edtAuthorEmail = dialog.findViewById(R.id.edt_author_email);
edtAuthorComment = dialog.findViewById(R.id.edt_author_comment);
dialogComment_okBtn = dialog.findViewById(R.id.dialogComment_okBtn);
dialogComment_cancelBtn = dialog.findViewById(R.id.dialogComment_cancelBtn);

edtAuthorName.setText(AppPreference.getInstance(mActivity).getString(PrefKey.KEY_NAME));

dialogComment_cancelBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (dialog != null) {
            dialog.dismiss();
        }
    }
});

dialogComment_okBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        authorName = edtAuthorName.getText().toString().trim();
        authorEmail = edtAuthorEmail.getText().toString().trim();
        authorComment = edtAuthorComment.getText().toString().trim();

        AppPreference.getInstance(mActivity).setString(PrefKey.KEY_EMAIL, "noEmail@gmail.com");
        AppPreference.getInstance(mActivity).setString(PrefKey.KEY_NAME, authorName);

        if (commentId == AppConstant.THIS_IS_COMMENT) {
            sendComment(authorName, "noEmail@gmail.com", authorComment);

        } else {
            sendReply(authorName, "noEmail@gmail.com", authorComment);
        }
        dialog.dismiss();
    }
});

dialog.show();

我该怎么办?请不要给我负面评价,请帮助我

1 个答案:

答案 0 :(得分:0)

您可以使用 DialogFragment 扩展您的课程,其余部分将像

这样的片段
public class YOurDialogFragment extends DialogFragment {
 @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);
      //If don't want toolbar
    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    return dialog;
 }

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.customLayout, container, false);
}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

}