android 弹多个dialog,关于android:AlertDialog弹出两次

我在其createview()方法上有一个fragment,我设置了一个条件,如果此条件为true,则显示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);

}

});

}

您发布的代码是否有可能被两次调用?

您确定已经没有两个对话框了吗?我认为您的代码调用了两次。

检查两个对话框是堆叠在一起还是在关闭对话框后立即弹出?

@Jim我被调试了,代码没有运行两次

@ADM我已调试,代码未运行两次

@HendraWD是什么意思?

@blackHawk可以在附加或替换此片段的位置发布代码吗?

暂时在按钮单击事件中注释此方法" acceptRejectRequest",然后尝试!

发布您的完整片段可能是您在onresume上再次运行它

你好。我从未像您那样写过Alertdialog。但是我认为您应该在show()对话框之前移动dialog.create()。

我的意思是说,关闭对话框后它真的又弹出了吗,还是只是两个对话框堆叠在一起了?

还请确保您不会在碎片附着后再次更换碎片

@blackHawk AFAIK不可能用此代码打开两个dilog。所以剩下的就是您的OnCreateView()正在调用Twice。因此,请确保您没有两次添加相同的片段。只需登录onCreateView()即可检查。

@blackHawk方法acceptRejectRequest做什么?该方法是否会循环,因此两次推送"警报对话框"

它只是api调用,请注意其他

我使用并完美工作的方式是定义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();

总是调试您的代码,看看代码是如何执行的,在这种情况下,代码运行两次并且对话框相互堆叠,因此消除了上方的对话框弹出对话框,因此看起来对话框多次弹出:)

编码愉快!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值