Android 的 一个小问题

public void showPD(View v){
ProgressDialog dialog = ProgressDialog.show(this, "数据加载", "数据加载中...");
for(int i=0;i<20;i++)
Thread.sleep(100);

dialog.dismiss();
        }
    showPD是一个Button onclick指定的方法    , 为什么点击button后 对话框不显示?

这个问题许久之前犯过一次,纠结了一晚上,现在又遇到这个问题马上就解决了,激动地分享给大家

假如你建了数据库并真机调试过这个程序,后来发现错误修改了创建数据库的类,然后出现错误提示“no such table XXX” ,那么在你确定无语法错误的前提下,请在手机上卸载这个软件重新调试就ok了,因为你调试过一次继续调试时,数据库不会重新创建,所以会出现找不到你修改后的数据表和相关记录
......
答案就在这里:一个关于android数据库操作的小问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

一:写了一个Log在方法里,打印出来了,说明按钮调用了方法,是方法里面出的问题。。(虽然可以但是不要用这种布局文件里面写方法的执行)
二:Thread.sleep(100);要抛出异常
三:这是你的主要问题了 ProgressDialog用法不对,ProgressDialog dialog = ProgressDialog.show(this, "数据加载", "数据加载中...");这样肯定不行,至少一个是ProgressDialog dialog = new ProgressDialog(this);dialog.show(this, "数据加载", "数据加载中...");,如果你希望自动停止掉的话一个开辟个线程执行
new Thread(new Runnable() {

        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            try {  
                Thread.sleep(2000);  
                // cancel和dismiss方法本质都是一样的,都是从屏幕中删除Dialog,唯一的区别是  
                // 调用cancel方法会回调DialogInterface.OnCancelListener如果注册的话,dismiss方法不会回掉  
                dialog.cancel();  
                // dialog.dismiss();  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  

        }  
    }).start();  

你的那个延迟函数是没有作用的吧。。。只是你的dialog出来了有瞬间dismiss()了,那个延迟是不可以直接写在主线程里面的,你可以写一个handler等待延迟,之后再dismiss dialog,你可以在你的dialog.dismiss()后面打印一个数据,看看它什么时候执行的,应该是没有等待就直接执行的。。。