[英]android shared preferences seem to be overwritten Java
我對android編程很陌生,所以我確定有些簡單的事情我做得不好。 我有兩個活動正在訪問共享的首選項文件。 一個從中讀取內容並將內容顯示到列表中,另一個從用戶讀取內容並將新項目添加到列表中。 我遇到的問題:當我從文件中讀取內容並嘗試向列表中添加新項目時,我的原始列表被覆蓋了。 也許這不是實際發生的事情,但在我看來這就是問題所在。 當我從子活動中添加一個新項目並返回到顯示列表的原始活動時,我只會看到我保存的最新項目,而不是以前創建的任何其他項目。
第一個活動是主要活動,它簡單地讀取共享的首選項,並將項目添加到字符串中,並以逗號分隔,並在列表視圖中顯示它們。 我只展示了在列表視圖中顯示項目的方法:
public void addItems() {
String strLists="";
SharedPreferences sharedPref = getSharedPreferences("ListNamesFile", MODE_PRIVATE);
strLists = sharedPref.getString(getString(R.string.edit_message), strLists);
listItems.clear();
String[] myLists = strLists.split(",");
for(int r=0;r<myLists.length;r++){
listItems.add(myLists[r].toString());
}
//test adding an extra list item to make sure that the issue isn't from adding
//items to the listview
//listItems.add("test");
adapter.notifyDataSetChanged();
}
第二個活動是從編輯文本控件中獲取新字符串,將其添加到帶有列表項的字符串的末尾,然后將更改提交到共享首選項文件。 我已經包括了用於檢索共享首選項並將新項寫入字符串末尾的方法:
public void createListOnClick(View view){
//create a file for storing list items
SharedPreferences sharedPref = getSharedPreferences("ListNamesFile", MODE_PRIVATE);
String strMyLists = "";
sharedPref.getString(getString(R.string.edit_message),strMyLists);
String[] lists = strMyLists.split(",");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lists.length; i++) {
sb.append(lists[i]);
sb.append(",");
}
SharedPreferences.Editor editor = sharedPref.edit();
EditText txtListName = (EditText)findViewById(R.id.txt_list_name);
sb.append(txtListName.getText().toString());
editor.putString(getString(R.string.edit_message), sb.toString());
editor.commit();
finish();
}
看來我想念的東西一定很簡單,但我一直無法弄清楚,因此對您的幫助將不勝感激。
您仍然沒有在strMyLists中分配sharedPref值。
在第二個活動中,您實際上並未分配讀取的共享首選項:
你應該更換
sharedPref.getString(getString(R.string.edit_message),strMyLists);
同
strMyLists = sharedPref.getString(getString(R.string.edit_message),strMyLists);
在getString方法中
sharedPref.getString(getString(R.string.edit_message),strMyLists);
第二個參數是默認值。 所以你將不得不寫。
strMyLists = sharedPref.getString(getString(R.string.edit_message),"");
它將與此一起工作。 其余代碼很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.