Android:Dialog崩溃在线程?

时间:2010-11-18 23:11:16

标签: java android multithreading user-interface

我有一个包含线程和进度对话框的类。当线程停止时,对话框必须解除。但如果线程停止,应用程序崩溃:S有没有人知道什么是错的?


public class Main extends Activity {

public static ProgressDialog LoadingDialog = null;

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LoadingDialog.show(AndroidRSSReader.this, "Laden...", "Even geduld aub...", true); setContentView(R.layout.main); startUp();

new Thread(new Runnable(){ public void run() {

         try {
 Thread.sleep(1000);
} catch (InterruptedException e) {

 e.printStackTrace();
}
         LoadingDialog.dismiss();
        }
    }).start();

}

2 个答案:

答案 0 :(得分:3)

当你调用dismiss时,

LoadingDialog仍为null。您需要确保并将其分配给某些内容(例如您的进度条)。

LoadingDialog = ProgressDialog.show(AndroidRSSReader.this, "Laden...", "Even geduld aub...", true);

答案 1 :(得分:1)

似乎在解除对话框时遇到问题尝试使用处理程序在UI线程上执行操作:

private Handler handler = new Handler() {
    @Override

    public void handleMessage(Message msg) {
    // perform logic
    if(LoadingDialog!=null)//first check if dialog is not null.This might be a reason for crashing
     LoadingDialog.dismiss();
    LoadingDialog=null
    }

    };

&安培;然后只需致电handler.sendEmptyMessage(0);即可在您的活动中调用它 &你完成了。

其他建议:还要查看AsyncTask以执行异步操作。