开发者社区 问答 正文

android API19如何实现阻塞式对话框? 400 报错

android API19如何实现阻塞式对话框? 400 报错

我的程序主界面是一个ListView,实现了批量导入数据的功能,在导入完成后会有一个导入成功或失败的提示,用户点击确定后,回到主界面。

目前的问题是,如果要执行刷新数据的代码,不管导入成功失败提示用AlertDialog还是PopupWindow,导入提示都是闪了一下,然后被后面的刷新代码给冲掉了。而如果不刷新,导入提示显示正常,但是ListView的数据不正常。

都说Popupwindow是阻塞式的对话框,我试了,没有什么用。

请大神赐教,不胜感激!(小白,请讲详细一点)

展开
收起
爱吃鱼的程序员 2020-06-01 11:18:42 606 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    不是很明白你描述的问题。我个人在实现阻塞式对话框的时候都是使用DialogFragment使用一个ProgressBar转圈圈的布局,然后设置setCancelable(false)和getDialog().setCancelOnTouchOutSide(false),这样用户点击窗口外部或者按返回键都无法取消这个对话框。

    ######不觉明厉######

    引用来自“DrkCore”的评论

    不是很明白你描述的问题。我个人在实现阻塞式对话框的时候都是使用DialogFragment使用一个ProgressBar转圈圈的布局,然后设置setCancelable(false)和getDialog().setCancelOnTouchOutSide(false),这样用户点击窗口外部或者按返回键都无法取消这个对话框。

    你说的那个popupwindow也可以实现啊。我想实现的东西或许你看了代码就明白了:
    if(fails.isEmpty())
                                                {
                                                    cu.showDialogMessage("导入成功!", "生日数据已导入成功!", "success");
                                                }
    else
                                            {
                                                cu.showDialogMessage("导入失败", "生日数据导入失败,请检查数据文件是否已被破坏!", "error");
                                            }
    cu.switchToMain(1);


    最后cu.switchToMain(1);代码会导致对话框一闪而过

    public void showDialogMessage(String title,String message,String type)
    {
    
    AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
    builder.setTitle(title); builder.setMessage(message); builder.setNegativeButton("确定", null); builder.create().show();
    }
    ######基础啊基础啊,基础不牢,地动山摇######

    引用来自“花花兽”的评论

    基础啊基础啊,基础不牢,地动山摇
    您就别说风凉话,指点一下啊!######

    目前我将cu.switchToMain(1);这句话放到builder.setNegativeButton("确定", nul

    这个按钮的监听事件里去了,问题已解决。

    但是我这个showDialogMessage就没办法通用了。

    不知道是否还有更好的办法?

    2020-06-01 11:18:44
    赞同 展开评论