2013-07-29 59 views
0

我想彈出一個進度對話框,然後我把下面的代碼onCreate方法從MainActivityProgressDialog:爲什麼?

ProgressDialog.show(MainActivity.this, "", "Loading..."); 

但在那之後,我會消失ProgressDialog,然後我把

progressDialog.dismiss(); 

但是eclipse告訴我:「不能從類型對話框中對非靜態方法dismiss()進行靜態引用」爲什麼?該片段是

if(check.isDeviceConnected()) 
     { 
      sincro = new Synk(this); 
      sincro.start(); 
      ProgressDialog.show(MainActivity.this, "", "Loading"); 

      } 

基本上我想,所以我覺得progressDialog.dismiss(同步後的ProgressDialog消失)必須列明}

回答

3

你需要捕捉到ProgressDialog參考:

ProgressDialog myDialog = ProgressDialog.show(MainActivity.this, "", "Loading..."); 

然後,你可以這樣做:

myDialog.dismiss(); 

這需要做這樣因爲dismiss()不是一個靜態方法,而且它必須在一個對象上調用。相反,show(...)的一種靜態方法,所以可以直接調用它。 (沒有物體)。

+0

完美的,但如果我要讓它消失Synk後爲我做什麼? –

+0

那麼你很可能會把'myDialog'作爲一個字段(如果有必要的話),並且調用'myDialog.dismiss()'你想解僱它的地方。這可能意味着你必須在線程內使用'View.post()'或'Activity.runOnUiThread()',這樣ui線程纔會調用dismiss。 –

+0

你能給我一個示例代碼? –

1

使用ProgressDialog這樣

用於初始化ProgressDialog

ProgressDialog dialog = new ProgressDialog(YourActivity.this); 
     dialog.setMessage("Loading..."); 
     dialog.setCancelable(false); 

初始化之後顯示ProgressDialog

dialog.show(); 

對於駁回ProgressDialog

dialog.dismiss(); 
0

你應該改變這樣的:

if(check.isDeviceConnected()) 
    { 
     sincro = new Synk(YourActivity.this); 
     sincro.start(); 
     ProgressDialog mydialog = null; 
     mydialog = ProgressDialog.show(MainActivity.this, "", "Loading"); 

     } 

,那麼你必須把:

 mydialog.dismiss(); 
相關問題