从run()方法显示对话框

时间:2009-07-03 13:55:56

标签: java android

我试图从run方法弹出对话框,它给我一个异常,即Looper.prepare没有被调用,当我调用相同的方法时,我没有得到任何异常但是控制台上没有显示弹出对话框。因为我以这种方式使用了处理程序,

handler = new Handler() {
    public void handleMessage(Message msg) {
        showDialog(DIALOG1_KEY);
        // process incoming messages here
    }
};

我再也没有得到任何例外但仍然没有运气可以告诉我我做错了什么。

1 个答案:

答案 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
  }
};