在我的應用程序中,我需要將值保存到Sharedpreferences文件RKs_Data中而不覆蓋現有數據。每一次,我在我的應用程序中點擊「是」,我需要將所有值存儲在「RKs_Data」中,而不是僅僅將最新的「名稱」和「phoneNo」存入文件。將更多值添加到共享首選項而不是覆蓋現有值
- 是否可以通過SharedPreferences來實現?如果是,如何?
- 如果不是,下一步我有什麼更好的選擇來實現呢?
對於例如,
- 當我第一次點擊,如「布萊恩」的聯繫人之一,它在SharedPreferences兩者的姓名和電話爲 布賴恩和99999299999節約與第一保存在共享偏好文件'RKS_Data'
當我點擊其他聯繫人說 '莫奈',我RKs_Data應該出現這樣的:
- 布賴恩99999299999
- 莫奈000.1億 等等....
我搜索了,但到處是隻提到有關保存它,但沒有關於追加或與數據做一些操作...
請指導...
片段是象下面這樣:
-------
public class RKsContacts_Main extends ListActivity {
// private ListView listView;
private List<ContactBean> list = new ArrayList<ContactBean>();
SharedPreferences sp;
File Fav_Contacts_file;
String contact = null;
List<String> listOfFavoritePhrases = new ArrayList<String>();
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.rks_contactslist_main);
ListView listview = getListView();
sp = getSharedPreferences("PACKAGE", Context.MODE_PRIVATE);
-------
--------
@Override
public void onClick(DialogInterface dialog, int which) {
String serialized = sp.getString("phrases", null);
listOfFavoritePhrases = new ArrayList<String>(Arrays.asList(TextUtils.split(serialized, ","))); // Line 141
listOfFavoritePhrases.add(name);
listOfFavoritePhrases.add(phoneNo);
SharedPreferences.Editor editor = sp.edit();
editor.putString("phrases",TextUtils.join(",", listOfFavoritePhrases));
editor.commit();
}
});
alert.show();
}
--------
低於10
logcat的:
07-03 09:00:51.014: E/AndroidRuntime(9574): FATAL EXCEPTION: main
07-03 09:00:51.014: E/AndroidRuntime(9574): Process: com.example.rkscontacts_list, PID: 9574
07-03 09:00:51.014: E/AndroidRuntime(9574): java.lang.NullPointerException
07-03 09:00:51.014: E/AndroidRuntime(9574): at android.text.TextUtils.split(TextUtils.java:332)
07-03 09:00:51.014: E/AndroidRuntime(9574): at com.example.rkscontacts_list.RKsContacts_Main$4.onClick(RKsContacts_Main.java:141)
07-03 09:00:51.014: E/AndroidRuntime(9574): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
07-03 09:00:51.014: E/AndroidRuntime(9574): at android.os.Handler.dispatchMessage(Handler.java:102)
07-03 09:00:51.014: E/AndroidRuntime(9574): at android.os.Looper.loop(Looper.java:136)
07-03 09:00:51.014: E/AndroidRuntime(9574): at android.app.ActivityThread.main(ActivityThread.java:5017)
07-03 09:00:51.014: E/AndroidRuntime(9574): at java.lang.reflect.Method.invokeNative(Native Method)
07-03 09:00:51.014: E/AndroidRuntime(9574): at java.lang.reflect.Method.invoke(Method.java:515)
07-03 09:00:51.014: E/AndroidRuntime(9574): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-03 09:00:51.014: E/AndroidRuntime(9574): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-03 09:00:51.014: E/AndroidRuntime(9574): at dalvik.system.NativeStart.main(Native Method)
你可以幫助我在上述步驟的示例代碼...? –
查看更新的答覆 –
我已經更新了我的問題,並提供了更多詳細信息,同時我也在處理您的建議 –