2014-02-20 45 views
0

我試圖構建一個不錯的小對話框,讓用戶選擇與主服務器的同步間隔。在對話框構建器實例化對話框之前在偵聽器中引用對話框

public void editSyncInterval(View view) 
{ 

final AlertDialog intervalDialog; 
final CharSequence[] items = { "1 minute", "2 minutes", "5 minutes", "10 minutes", "30 minutes" }; 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("Select Sync Interval"); 
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() 
{ 
    public void onClick(DialogInterface dialog, int item) 
    { 
     switch(item) 
     { 
      case 0: 
       //save 
       intervalDialog.dismiss(); 
       break; 
      case 1: 
       //save 
       intervalDialog.dismiss(); 
       break; 
      case 2: 
       //save 
       intervalDialog.dismiss(); 
       break; 
      case 3: 
       //save 
       intervalDialog.dismiss(); 
       break; 
     } 
    } 
}); 
intervalDialog = builder.create(); 
intervalDialog.show(); 
} 

然而,在4號線是intervalDialog.dismiss();,我得到以下(而預期的)錯誤:The local variable intervalDialog may not have been initialized

我假設你需要你已經建立了監聽器等,但在這種情況下調用builder.create 後 - 你怎麼引用對話框本身 - 因爲你還沒有實例化它了嗎?

+0

你爲什麼不使用的onclick方法的對話框參數?如果包含構建器構建它時將創建的對話框實例 - >等於那麼可用的intervalDialog。或者,你可以使intervalDialog變量爲全局變量,例如將其放入活動成員列表中。 – velis

回答

2

您將DialogInterface dialog作爲參數放入偵聽器中。你可以撥打dismiss()就可以了。

,您應該使用的

dialog.dismiss(); 

代替

intervalDialog.dismiss(); 
+0

啊,我錯過了那個參數,謝謝:) –

+0

:)最受歡迎。 congs –