2012-02-28 46 views
1

我從活動使用「onCreateDialog」的方法打開一個警告對話框:Android對話框:解除對話框後我應該返回哪裏?

protected Dialog onCreateDialog(int id) { 
     Dialog dialog = null; 
     switch(id) { 
     case DIALOG_PASSWORD_VERIFICATION: 
      LayoutInflater factory = LayoutInflater.from(this); 
      final View passwordDialog = factory.inflate(R.layout.password, null); 

      AlertDialog.Builder alert = new AlertDialog.Builder(this); 

      alert.setTitle("Please enter your password"); 
      alert.setView(passwordDialog); 
      alert.setCancelable(false); 
      alert.create(); 

      alert.setPositiveButton("Ok", new PasswordDialogListenerOk(
        passwordDialog, getApplicationContext())); 
      alert.setNegativeButton("Cancel", new PasswordDialogListenerOk(
        passwordDialog, getApplicationContext())); 

      alert.show(); 
      break; 
     default: 
      dialog = null; 
     } 
     return dialog; 
    } 

一切正常和順利,但我不知道在哪裏,我在我的活動取回。對話框消失,但對話框關閉後,活動中的返回點在哪裏?

回答

1

有沒有真正明確的「哪裏」返回到活動。它確實在某些時候出現在OnResume上,但是如果你想在對話結束後做一些事情,那麼你應該把這些代碼放到你的監聽器中(在這種情況下,你稱它爲PasswordDialogListener)。如果您想要使用它的具體內容,您應該解釋您要完成的任務。

+0

在監聽器中,我調用服務器以驗證用戶在對話框中輸入的密碼。驗證密碼後,我想回到活動並更改TextView元素的值。我無法更新偵聽器中的此元素,因爲我無法訪問它。 – pfust75 2012-02-28 21:27:58

+0

所以給你的聽衆進入。有很多方法可以做到這一點。如果您的監聽器中的代碼不是異步的,那麼可以將您的'PasswordDialogListener'封裝在另一個監聽器中,該監聽器在內部監聽器完成後更新UI。您可以將回調傳遞給您的偵聽器,您可以讓偵聽器成爲內部類,或者您可以將視圖傳遞給偵聽器以更新它(只要確保不泄漏它)。 – kabuko 2012-02-28 21:35:37