2011-11-03 61 views
1

我一直在尋找在過去一天半的幾個網站關於如何存儲字符串/字符串數組/ /等。我似乎無法弄清楚。我不確定我是否不完全理解如何實現數據存儲..或者什麼。但這是我的問題,簡單地說,我有兩個活動頁面(我們分別命名爲'A,B')。我想要做的就是從Activity B的文本視圖中獲取一個字符串,將其存儲在一個數組中,然後通過單擊Activity A中的按鈕來訪問它。Android存儲字符串數組

我知道這很簡單,但是我碰到了因爲某種原因阻塞...我試圖使用SharedPreferences,但是我如何從Activity B獲取字符串,將其存儲在全局數組中,並讓它由不同的活動(Activity A)訪問?

+0

謝謝大家的幫助 – Derek

回答

3

只要將它保存到共享偏好(通常的onPause()):

在一個又一個的活動和負載
  SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
      editor.putString(GAME_STATE, writer.toString()); 
      editor.commit(); 

(通常的onResume()):

 SharedPreferences preferences = getPreferences(MODE_PRIVATE); 


    String jsonState = preferences.getString(GAME_STATE, null); 

而且沒有什麼能阻止你從使用公共靜態變量

+0

好吧,這是我所看到的,但對我來說這個問題發生在這裏。該程序非常簡單,我沒有使用任何線程,只是意圖。它看起來效率很低,但它是一個非常小的程序。調用時,編輯器的putString是如何存儲的?編輯器是否像堆棧一樣工作,能夠採用多個字符串?或者它一次只能存儲一個字符串? – Derek

+0

首選項編輯器是地圖。只是怕它javadocs。它可以將字符串和原語存儲在不同的鍵下。雖然這可能看起來沒有效果,但這是在任何時候您的活動可以停止並被殺死的環境中的正確方法(例如來電) –

+0

如果我想存儲一個字符串,現在很容易,但是您將如何存儲多個字符串?如果用戶按下「保存文本」按鈕,那麼該代碼將被調用,但它不會在編輯器中使用相同的密鑰創建一個字符串?有沒有辦法解決這個問題? – Derek

0

是的,你可以獲取和存儲全局數組的值,但是一旦你關閉了應用程序,你將會失去所有的東西。因此,您最好創建一個表格,並根據需要存儲/獲取表格中的值。

以下是創建SQLite example的示例。

+0

好吧,您認爲我需要SQLite嗎?我只想要存儲二十根琴絃。 – Derek

+0

@Derek但是,如果您存儲並關閉應用程序,您將再次重新打開應用程序時會丟失所有內容。 –

+0

SQLite對此將會矯枉過正。 –

1

您不能直接在共享首選項中存儲數組,但可以存儲一組數據。

參見putStringSetgetStringSet。如果您希望將它們存儲在SharedPreferences中,您可以將陣列中的所有項目添加到LinkedHashSet(只要它們是唯一的)。有關如何使用SharedPreferences的一般想法,請參閱Konstantin的答案。