我的on fragment
方法中有一个createview()
我提出了一个条件,如果此条件为真,则显示alertdialog
并单击其任何按钮,忽略对话框,但单击对话框的按钮再次弹出对话框,这是我的条件,里面有dialog
:
if(getUser().isFirstTimeLogin() && getUser().getReceivedRequests().size() > 0 && getUser().getReceivedRequests().get(0).getStatus() == 0){
dialog = new AlertDialog.Builder(getActivity()).create();
LayoutInflater layoutInflater = getLayoutInflater();
View dialogView = layoutInflater.inflate(R.layout.anonymous_login_popup, null);
TextView title = (TextView) dialogView.findViewById(R.id.title);
TextView description = (TextView) dialogView.findViewById(R.id.tv_anonymous_dialog_content);
TextView okBtn = (TextView) dialogView.findViewById(R.id.okBtn);
TextView cancelBtn = (TextView) dialogView.findViewById(R.id.cancelBtn);
title.setText("Pending Request");
description.setText("Your Spouse request is pending");
okBtn.setText("Accept");
cancelBtn.setText("Reject");
Typeface tf = FontManager.getTypeface(getActivity(), FontManager.VARELA_ROUND);
FontManager.setContainerTypeface(dialogView, tf);
dialog.setView(dialogView);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.getWindow().getAttributes().windowAnimations = R.style.DialogAnimation;
dialog.show();
okBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss(); acceptRejectRequest(String.valueOf(getUser().getReceivedRequests().get(0).getId()), 1);
}
});
cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss(); acceptRejectRequest(String.valueOf(getUser().getReceivedRequests().get(0).getId()), 2);
}
});
}
答案 0 :(得分:0)
我使用和完美工作的方式是定义AlertDialog而不是AlertDialog.Builder 我展示了AlertDialog
这是我的代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.DialogTheme);
LayoutInflater inflater = LayoutInflater.from(this);
View contentView = inflater.inflate(R.layout.custom_layout , null);
builder.setView(contentView);
AlertDialog alert = builder.create();
...
//instead of builder.show()
alert.show();
点击即可使用alert.dismiss();
答案 1 :(得分:0)
总是调试你的代码,看看代码是如何执行的,在这种情况下,代码运行两次,对话框相互叠加,因此忽略它下面的上方对话框弹出对话框,好像多次弹出对话框:)
快乐的编码!
答案 2 :(得分:0)
就显示对话框而言,我总是在utils类中设置一个标志,例如dialogIsDisplayed
,一个布尔值。每当有一个调用对话框的事件时,当此标志为false
时,我就会显示该对话框。立即,即在调用对话框后,此标志设置为true
。
在对话框中,在调用dismiss()
之前,此标志设置为false
。
这样,可以防止创建重复对话框。