如何使用SharedPreferences保存和检索多个旧值?

时间:2015-09-09 12:46:30

标签: java android

我是Android的新手。我正在开发地址应用程序。我有两个片段(AddressFragment& AddAddressFragment).AddressFragment包含一些编辑文本(line1,city,country,state)。用户填写AddressFragment中的所有详细信息并单击“保存”按钮后,将显示带有单选按钮的显示警报(家庭地址,办公室地址,学校地址等)。如果在单选按钮中选择任何选项,则在AddAddressFragment中自动创建列表(Home Address,Office Address等)。

我的问题是,如果我从AddAddressFragment中的列表中单击任何人(Home Address),则表示我想显示存储在Home Address中的任何用户。但是,我只能检索最近存储的地址。

如何检索以前存储的项目。

请有人帮助我!

我的代码在这里:

AddressFragment.java:

SharedPreferences shared = getActivity().getSharedPreferences("Addresses", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = shared.edit();
                        editor.putString("AddressDetails",line1.getText().toString()+"|||"+line2.getText().toString()+"|||"
                                +cityText.getText().toString()
                                +"|||"+zipcode.getText().toString()+"|||"+country.getSelectedItem().toString()
                                +"|||"+state.getSelectedItem().toString()+"|||"+landmark.getText().toString());
                        editor.commit();

AddAddressFragment.java:

SharedPreferences shared = getActivity().getSharedPreferences("Addresses", Context.MODE_PRIVATE);
        String[] values = shared.getString("AddressDetails", "").split("\\|\\|\\|");
        Log.d("Values:", Arrays.toString(values));

            Log.d("Line 1:",values[0]);
            Log.d("Line 2:",values[1]);
            Log.d("City:",values[2]);
            Log.d("Zipcode:",values[3]);
            Log.d("Country:",values[4]);
            Log.d("State:",values[5]);
            Log.d("Landmark:",values[6]);

1 个答案:

答案 0 :(得分:0)

我认为将地址存储在SharedPreferences中是一个非常糟糕的主意。有很多更好的方法来存储这些数据,比如SQLite方式:

http://developer.android.com/training/basics/data-storage/databases.html

关系数据库是您要存储地址的内容。只需创建(id,地址,zip,housenumber,adressType)

等表格

adressType将指示它是办公室,家庭等等。

然后,您可以将每个地址写入表中,并使用简单的查询(如

)检索它们
Select * from adresses

或按adressType过滤它们。

我真的建议你看一下SQLite和关系数据库