点击按钮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显示下去