2012-07-03 57 views
0
public Context ctx; 
@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.ctx = this; 
      //another code......) 

     send = (Button)findViewById(R.id.wyslij_zapytanie_ofertowe); 
     send.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       ProgressDialog dialog = ProgressDialog.show(ctx, "Loading", "Please wait...", true); 
       try { 
        GMailSender sender = new GMailSender("[email protected]", "ddx"); 
        sender.sendMail("This is Subject", 
          "This is Body", 
          "[email protected]", 
          "[email protected]"); 
        dialog.dismiss(); 
       } catch (Exception e) { 
        Log.e("SendMail", e.getMessage(), e); 
        dialog.dismiss(); 
       } 
      } 
     }); 

我試着改用ctx把ClassName.class也不行。任何人都有想法如何解決這個問題?ProgresDialog沒有顯示

回答

1

最有可能您的問題是,你叫dialog.dismiss();「立即」你叫dialog.show(),這可能會導致這種「不顯示後「效應。

dialog.setButton("Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
    } 
}); 
0

它甚至可能因爲只有幾行後,你叫dialog.dismiss()它被創建之前得到解僱

+0

你說得對。當我刪除dialog.dismiss()它顯示。如何顯示例如對話框。 1秒然後調用dismiss()方法? – plancys

+0

你不能,對話需要時間來創建,如果它在該時間之前被解僱,那麼它不會被完全創建。如果它的執行速度很快,那麼你真的不需要進度對話框,因爲在OS發出'ANR'錯誤之前你有'5秒',如果你真的想顯示一個對話框,你可以使用一個句柄,在執行代碼之前延遲,以便對話有時間顯示。進度對話框用於長時間運行 – tyczj

+0

ok。我認爲如果有人點擊'發送'和應用程序似乎沒有響應,即使幾秒鐘,它可能會很煩人 – plancys