博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
添加一个关闭ProgressDialog的静态方法:
阅读量:6155 次
发布时间:2019-06-21

本文共 1512 字,大约阅读时间需要 5 分钟。

 

ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);
它的用法一般都是在用intent开启一个新的activity的时候,你直接加上这句话,是达不到你想要的效果的。
你必须这样用:把用intent开启activity的这件事放在一个Runnable对象的run()方法中,然后用handler.post()方法来运行这个线程。
代码如下:
Handler handler = new Handler();
Runnable mTasks = new Runnable() {
  public void run() {
    Intent intent = new Intent();
    intent.setClass(YourClass .this,EditHome.class);
    startActivity(intent);
   }
};
final ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);
handler.post(mTasks);

这样算是达到我们要的效果了,可是,那个ProgressDialog的窗口并没有关闭,所以后面还要加上myDialog.dismiss();

但这样的话,窗口出来就消失,我们又看不到ProgressDialog了...所以,我们要用一个线程来控制窗口消失的时间:

new Thread() {

   public void run() {
     try{
       sleep(5000);
     }catch(InterruptedException e){
         e.printStackTrace();
     }
     myDialog.dismiss();
   }}.start();

那个sleep的时间是你估算下一个activity显示出来所需要的时间。OK了。

但显然这样做是不科学的。科学的做法是:首先在原avtivity中添加一个关闭Dialog的静态方法:

public static void closeProgressDialog() {

   myDialog.dismiss();
}

然后在目标的activity中添加两个成员变量:

private static final int EVENT_TIME_TO_CHANGE_IMAGE = 100;

private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
      switch(msg.what){
        case EVENT_TIME_TO_CHANGE_IMAGE:
             YourPrimaryClass.closeProgressDialog();
        break;
     }
}};

其中Handler中注册了关闭窗口的条件和关闭动作(调用静态方法)。然后在这个activity的onCreat()方法里的最后面加上发送消息的代码:

Message message = mHandler.obtainMessage(EVENT_TIME_TO_CHANGE_IMAGE);
mHandler.sendMessage(message);
这样就能保证是在目标activity全部显现出来之后关闭那个progressDialog了。
 

转载地址:http://snffa.baihongyu.com/

你可能感兴趣的文章
ubuntu16.04 Docker默认存储路径修改
查看>>
jQuery 复选框全选反选
查看>>
py5.21
查看>>
将数据导出Excel格式
查看>>
[css3]跑马灯
查看>>
shell面试题整理
查看>>
php函数总结
查看>>
Java 对象的封装,继承,抽象,接口写法
查看>>
Java抽象类与接口的区别
查看>>
换教室
查看>>
Oracle笔记(4):一个存储过程编写及C#调用
查看>>
第二轮冲次会议第二次
查看>>
第二阶段评分
查看>>
QQ在线客服不用加好友就可聊天
查看>>
mysql 操作符
查看>>
编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果
查看>>
大道甚夷,而人好径
查看>>
Christopher Steiner:算法如何改变了世界
查看>>
数学之美系列二十三 -- 谈谈香农第一定律
查看>>
Java学习(一)
查看>>