2012-08-09 102 views
1

當ProgressDialog運行時,是否可以顯示Toast?如果是這樣,有一些關於如何做的例子?ProgressDialog正在運行時運行Toast

謝謝。

我不工作電流代碼:

final ProgressDialog pd = ProgressDialog.show(
         BotonesServicio.this, "Medidas", 
         "Comprobando datos"); 
       new Thread(new Runnable() { 
        public void run() { 
        Toast.makeText(FacturasIFirmar.this, 
         "Trying to show toast", Toast.LENGTH_LONG) 
          .show(); 

         pd.dismiss(); 
        } 
       }).start(); 
+2

你應該可以像你期望的那樣做到這一點。你有沒有工作的代碼?你有什麼嘗試? – maxko87 2012-08-09 16:56:27

+1

上下文很重要,當兩者的上下文相同時都是可能的。首先你應該嘗試。 – 2012-08-09 17:14:10

+0

我已更新我的問題。 – HaOx 2012-08-09 17:22:56

回答

2

ProgressDialog「凍結」線程,因此所有其他行動必須在一個單獨的線程執行。你必須在UI線程上創建你的Toast。

嘗試這樣:

ProgressDialog dialog = new ProgressDialog(context); 
    final Toast toast = Toast.makeText(context, "text", Toast.LENGTH_LONG); 
    Thread thread = new Thread(new Runnable() { 

     public void run() { 
      //Calculations here 
      try { 

       Thread.sleep(2000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      toast.show(); 
     } 

    }); 
    thread.start(); 
    dialog.show(); 

如果你想與UI線程進行通信,你應該使用的AsyncTask或將消息發送到處理程序,它執行的UI線程上的操作常規線程。

祝你好運!