這裏是場景:我有一個ListActivity,長按一個項目會彈出一個上下文菜單。上下文菜單中的一個項目是「刪除」,並顯示一個確認框(和AlertDialog)。當用戶在確認對話框中按OK時,我需要知道最初選擇的項目的ID,以便我實際上可以刪除它。如何將所選項目的ID從ListView傳遞到Android中的AlertDialog?
流程是這樣的:
This event: Causes Android to call: ----------------------------------------------------- Long press an item -> onCreateContextMenu() Select context menu item -> onContextItemSelected() call showDialog() -> onPrepareDialog() user clicks OK -> onClick()
在onCreateContextMenu和onContextMenuSelected,我可以從ContextMenuInfo所選項目的id來獲取。但是,在onPrepareDialog中,我不再有權訪問該信息。問題是onPrepareDialog需要這些信息來在其POSITIVE按鈕上設置一個onClick監聽器。
我知道,在onContextMenuSelected過程中,我可以將選定項目的ID存儲到我的活動字段中。我已經做到了,而且很有效。但它也很難看。它引入的有狀態讓我感到不安。有沒有其他人看到更好的方式來傳遞這些信息,而不是在活動中使用字段?
同意...這很醜,但它會工作。 – 2009-07-20 11:08:25
它迫使我對Android將如何調用我的活動做出假設。我認爲我在我的問題中列出的順序是正確的,但我可能錯過了一些細微差別,並且未來谷歌可能會改變它。編寫無狀態代碼比編寫非常有狀態的代碼更可取。 – 2009-07-20 13:39:31