2011-10-22 47 views

回答

0

我覺得你很困惑創建和準備行爲。

  • onCreateDialog用於設置對話框上的控件。它被調用一次。
  • onPrepareDialog用於自定義顯示的值。它被稱爲每次對話框顯示
2

我想我有一個修補程序onPrepareDialog不顯示與setMessage設置的消息。當最初創建對話框時(當它仍然是AlertDialog.Builder時),您必須將消息設置爲初始狀態(非空值),或者onPrepareDialog不會用預期值覆蓋它。所以當你創建對話框時,做一些這樣的事情,在消息中總是有一個非空值。我這個奮鬥了幾天,發現意外此解決方案:

當最初創建對話框(而不是在onPrepareDialog):

AlertDialog.Builder resultAlert = new AlertDialog.Builder(context); 

if (message == null) { 
    resultAlert.setMessage(""); 
} else { 
    resultAlert.setMessage(message); 
} 

然後onPrepareDialog,你應該能夠覆蓋與任何字符串值你想使用dialog.setMessage(yourMessage)。這似乎是Google代碼中的一個缺陷(我認爲他們稱之爲bug)。

+0

是的,這是一個錯誤:http://code.google.com/p/android/issues/detail?id=6489。您必須在onCreateDialog中使用非null值初始化消息,以使setMessage()在onPrepareDialog中工作。 – 2012-04-03 20:00:55