Android的AlertDialog.Builder show 了不显示弹窗,dialog.isShowing()方法返回的是true,说明已经弹窗,可就是不见弹窗布局,原因是线程不对

1.因为我在掉用show的地方居然是在子线程里面,因为我切换线程干了很多事情,最后弹了个dialog。一直不显示,我打日志显示确实调用了show方法,就是不报错也不show,后来我反推代码,发现我线程没切换回来,一直是在子线程里面操作。
2.解决办法:
回到UI主线程,方式有几种,我这里写一种回到UI线程的方法。当然有部分回到UI线程的方法不起作用,具体原因我也不知道,欢迎大家评论留言。

Handler mainHandler = new Handler(Looper.getMainLooper());
//这是回到UI主线程的方法
mainHandler.post(() -> {
     doSomething();
     textView.setText("回到UI主线程,更新textView");

        AlertDialog dialog = new AlertDialog.Builder(mContext).create();
        //这里是加载布局
        View convertView = createView(mContext,dialog);
        dialog.setView(convertView, 0, 0, 0, 0); // 设置view 和左上右下的间距
        dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialogInterface) {
           
            }
        });
        dialog.getWindow().setBackgroundDrawableResource(R.drawable.drawable_round_edge);
        dialog.getWindow().setGravity(Gravity.CENTER_HORIZONTAL);
       //在这里调用显示弹窗,这个需要在主线程才能看到弹窗
        dialog.show();

        //设置窗口的大小
        dialog.getWindow().setLayout(900, 900);
        dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
       
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值