在我目前正在對我有我與從保存在應用程序內部存儲器的ArrayList填充一個ListView第一個活動的應用程序。通過使用菜單按鈕選擇「添加」或通過點擊菜單中的現有項目,我可以進入我的第二個活動,這是一個編輯頁面。extras.getLong()似乎返回0,無論密鑰字符串是什麼
在第一個活動,如果按下Add按鈕,沒有額外的意圖通過,沒有任何字段(文本框等)需要在編輯活動填補。如果在第一個活動中單擊現有項目,則會將該項目的行ID作爲額外Intent中的一部分傳遞,密鑰字符串爲「_id」。
我明白,* Bundle.getLong(「_ ID」);如果沒有額外的已通過其意圖*應該返回null。我的問題是,由於某種原因,getLong()總是返回0.我試着把一些亂碼作爲getLong()的關鍵字符串,但它仍然返回0.有沒有人遇到過這個問題?
我還想補充一點,我有其他兩組類似這樣的活動,用同樣的方法來獲取ROWID,如果它已經過去了,他們都做工精細。
我一直沒能找到任何可能導致此問題的常見問題。預先感謝您的幫助。
[編輯]
任何混亂道歉和未示出先前此代碼。正如少數人評論的getLong將返回0,如果它找不到任何東西,但是我使用的代碼將mRowId設置爲null,如果是這種情況,或者至少我假設它。這一點有點混淆了我的,但它似乎工作時沒有其他額外的意圖通過。
mRowId = extras != null
? extras.getLong("_id")
: null;
我也有另一個爛攤子四周,發現如果任何額外的價值與目的(無論其鍵),通過它,則它會返回0,而不是空。我假設這個代碼不起作用,如果另外一個額外的通過。如果情況是這樣的話,是否有更好的方法可以在必要時傳遞rowId,如果沒有傳遞,則將其設置爲null。
你應該發佈'Intent'創建代碼並且你的活動的'onCreate'。 – 2012-03-07 15:45:25