我试图从run方法弹出对话框,它给我一个异常,即Looper.prepare没有被调用,当我调用相同的方法时,我没有得到任何异常但是控制台上没有显示弹出对话框。因为我以这种方式使用了处理程序,
handler = new Handler() {
public void handleMessage(Message msg) {
showDialog(DIALOG1_KEY);
// process incoming messages here
}
};
我再也没有得到任何例外但仍然没有运气可以告诉我我做错了什么。
答案 0 :(得分:3)
很难从您提供的代码段中判断出来,但我认为您错误地使用了处理程序。
您需要做的是在主线程上初始化一个新的Handler
对象,例如将其定义为字段变量。
private Handler handler = new Handler();
然后创建一个新的Runnable
,其中包含您要在GUI线程上执行的指令(但将从后台线程的run
方法调用)。
private Runnable runOnGUI = new Runnable() {
private void run() {
showDialog(DIALOG1_KEY);
}
};
然后在run方法中,您需要使用handler对象在GUI线程上发布runOnGUI
方法。
private Runnable runInBackground = new Runnable() {
private void run() {
handler.post(runOnGUI);
// Do processing
}
};