在我的应用程序中,我想在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();
我该怎么办?请不要给我负面评价,请帮助我
答案 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);
}