我是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]);
答案 0 :(得分:0)
我认为将地址存储在SharedPreferences中是一个非常糟糕的主意。有很多更好的方法来存储这些数据,比如SQLite方式:
http://developer.android.com/training/basics/data-storage/databases.html
关系数据库是您要存储地址的内容。只需创建(id,地址,zip,housenumber,adressType)
等表格adressType将指示它是办公室,家庭等等。
然后,您可以将每个地址写入表中,并使用简单的查询(如
)检索它们Select * from adresses
或按adressType过滤它们。
我真的建议你看一下SQLite和关系数据库