2012-03-10 79 views
3

我的主屏幕上有一個按鈕,每次按下該按鈕時都會添加一個編輯文本字段(爲了獲得最佳實踐,我將其限制爲20)。它基本上是一個小預算應用程序。我希望用戶在其中一個字段中填入X美元。然後,當他們準備好時,再次回到應用程序,並創建EditText仍然存在填充值。我知道如何利用SharedPerfrences來保存價值。但是,我不知道如何在用戶回來時保存新創建的EditText字段。如何在Android中保存(用戶創建的)動態佈局?

我實際上可以將擴大,並有一個按鈕,每場的EditText相關的日期選擇這麼快就點擊按鈕將創建三個對象,不只是一個。但我希望先得到一個工作,並在以後將這個原則應用於其他人。有什麼建議麼?

回答

1

聽起來像一個很好的候選人SQLite數據庫。

舉例來說,我使用的SQLite數據庫來保留和召回該用戶已安排我的應用程序中的小部件的座標和類型。

請注意,您從不希望嘗試存儲和調用實際的對象本身。在您的數據庫中,您需要設計適合您需要存儲的信息的自己的表格格式。如果您只需要保留一系列EditText字段的狀態,那麼這可能與只有一列包含每行中的字符串值的列一樣簡單。要從該數據庫再次構建UI,您需要循環並創建一個新的EditText實例,並從表中設置每個實例的文本。

+0

好的,非常感謝。看起來我是以錯誤的角度來看待這個問題的。雖然我很想簡化這一點,並使用SharedPreferences而不是SQLite,但至少你讓我走上了正軌!我很想看看別人會如何嘗試這個。 – KickingLettuce 2012-03-10 19:49:35

+0

'SharedPreferences'可能是一種更簡單的方法,可以開始並啓動並運行。然而,'SharedPreferences'確實用於存儲少量的特定鍵=值數據;它不適合陣列數據。所以,如果你剛一'EditText',那麼你可以像'mFieldValue'一個首選項鍵,但對於許多'EditText's你將不得不使用的按鍵,例如mFieldValue1,mFieldValue2等,或代替組中的所有'的EditText 's'值轉換爲一個值字符串。無論哪種方式都很麻煩,就像在一個圓洞中放置一個方形釘子,而這正是SQLite數據庫所在的地方。 – Trevor 2012-03-10 20:02:15

+0

根據您的建議在這裏做一些研究,我發現SQLite看起來是要走的路!謝謝你的幫助。 – KickingLettuce 2012-03-10 20:30:42

0

您將不得不使用Android Parcelable接口,請參閱this瞭解如何實現它,請參閱我在StackOverflow上詢問的this question,它有一個很好的答案。