我試圖用一個有用的對話框消息系統創建我的程序介紹。 我不想一次性將太多的文本超載給用戶,所以我想將我的對話分解爲多個部分。 當然每個部分都會有自己的信息。如何鏈接(立即重用)相同的對話框
我使用單獨的靜態類來處理消息傳遞和流邏輯;它工作正常。 我也實際使用3個對話框。 一個用於第一條消息(因爲你不能回去),一個用於中間消息,一個用於最終消息(因爲你不能前進)。 我可以從第一條消息中調用中間消息而沒有任何問題。我也能夠回到第一條消息。但是,當我嘗試從中間消息對話框重新顯示中間消息時,新對話框不會出現。
例子: 比方說,我有4個消息,所以中間信息需要出現兩次:
-
出現
- 第一條消息:用戶點擊下一個
- 中東消息出現:用戶點擊以前
- 第一條消息出現:用戶點擊下一步
- 中間消息出現:用戶點擊下一步
- 中間消息出現:用戶點擊下一步
- 最終消息顯示
的問題是,我沒有得到任何對話框上的第5步 我使用onPrepareDialog重新初始化對話,因爲他們已經習慣了。現在它基本上是一個onCreateDialog的克隆,其中交換機中的每個案例都調用適合該對話框的構建器方法。
這是我的中間對話方法的代碼。 (另2差不多,你能猜出他們的樣子來源於此。)
protected AlertDialog buildMiddleNoticeDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
.setTitle(Notice.getTitle())
.setMessage(Notice.getMessage())
.setCancelable(false)
.setNegativeButton(resources.getString(R.string.notice_next_button),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
showDialog(Notice.next());
}
})
.setPositiveButton(resources.getString(R.string.notice_previous_button),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
showDialog(Notice.previous());
}
});
return builder.create();
}
這似乎是完美的解決方案。但是,每次我在活動生命週期開始時將對話主題活動稱爲「黑幕」時,它都會顯示出來。我甚至嘗試過PostResume並沒有得到任何東西。我知道這不是新的活動,因爲我通過用戶交互觸發了它。但我需要它在那之前彈出。 (編輯)我挖得更深一點,看到你從一個按鈕啓動你的。無論如何有任何建議? – leetheguy 2010-11-19 03:53:43
Nm。這實際上是一個古老的已知錯誤。在這裏找到答案。 http://bit.ly/cFIliJ – leetheguy 2010-11-19 04:48:40