问题描述
- 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数据库操作的小问题
解决方案二:
一:写了一个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()后面打印一个数据,看看它什么时候执行的,应该是没有等待就直接执行的。。。
时间: 2024-09-30 15:13:57