我試圖構建一個不錯的小對話框,讓用戶選擇與主服務器的同步間隔。在對話框構建器實例化對話框之前在偵聽器中引用對話框
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 後 - 你怎麼引用對話框本身 - 因爲你還沒有實例化它了嗎?
你爲什麼不使用的onclick方法的對話框參數?如果包含構建器構建它時將創建的對話框實例 - >等於那麼可用的intervalDialog。或者,你可以使intervalDialog變量爲全局變量,例如將其放入活動成員列表中。 – velis