android 点击按钮后Dialog不显示问题解决

点击按钮Dialog不显示

在做项目时需要在点击按钮后出现一个查询中的Dialog,等向服务端请求到数据后Dialog消失,但是添加后Dialog并没有出现

public class OnClick implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.car:
                    mDialog = DialogUtil.createLoadingDialog(this, "查询中...");
                    resultsList.clear();
                    empty.setVisibility(View.GONE);
                    String c1 = car1.getText().toString();
                    String c2 = car2.getText().toString();
                    //判断用户输入的数据
                    if (!Util.check(c1, c2, car1,car2)) {
                        return;
                    }
                    String[] keys = new String[]{"c1","c2"};
                    String[] str = new String[]{c1,c2};
                    try {
                        String queryResult = queryCar(keys, str);
                        JSONObject jsonObject = ResponseUtils.parseResultToJson(queryResult);
                        if (jsonObject != null) {
                            //业务代码
                        }else {
                            listview.setVisibility(View.GONE);
                            empty.setVisibility(View.VISIBLE);
                        }
                    }catch (Exception e){
                        listview.setVisibility(View.GONE);
                        empty.setVisibility(View.VISIBLE);
                        e.printStackTrace();
                    }finally {
                        DialogUtil.closeDialog(mDialog);
                    }
                    break;
                default:
                    break;
            }
        }
    }

经过debug发现,Dialog出现后就立马执行了finally的关闭代码。他的执行顺序是先执行了请求数据-->显示Dialog-->关闭Dialog

就很奇怪,明明第一行就是显示Dialog

解决办法

在点击按钮前添加按钮的触摸事件

car.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()){
                    //按下
                    case MotionEvent.ACTION_DOWN:
                        String c1= car1.getText().toString();
                        String c2 = car2.getText().toString();
                        //判断用户输入的数据
                        if (Util.check(c1, c2, car1,car2)) {
                            mDialog = DialogUtil.createLoadingDialog(CarCriminalActivity.this, "查询中...");
                            break;
                        }
                        break;
                }
                return false;
            }
        });

在onTouch方法中返回了false,表示经过触摸方法后还会继续往后执行,交给后边的事件处理器处理,如果返回true,那么运行完onTouch方法后就不继续向后执行

在判断用户输入的数据时发现if判断里面如果没有break就跳不出触摸事件,会一直将Dialog显示下去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值