У меня есть Activity
, на котором пользователи регистрируются, а на втором Activity
, всем пользователям, которые зарегистрировались до сих пор, будет отображаться информация.
Я знаю, что это можно легко сделать, используябазы данных, но я хочу использовать SharedPreferences
.Я использую Gson для хранения / извлечения данных.У меня есть класс Student с полями id(rollno),name
.
. Я сохранил счетчик количества пользователей, и этот счетчик будет использоваться для извлечения.
Код, который сохраняет данные в общий доступ.предпочтение:
SharedPreferences preferences =
getSharedPreferences("mypref",MODE_PRIVATE);
SharedPreferences.Editor prefsEditor=preferences.edit();
Gson gson=new Gson();
if(preferences.contains("counter")){
counter=preferences.getInt("counter",0);
prefsEditor.putInt("counter",++counter);
}
else{
counter=0;
prefsEditor.putInt("counter",++counter);
}
String json = gson.toJson(student);
prefsEditor.putString("details"+counter,json);
prefsEditor.commit();
startActivity(intent);
}
Код для извлечения SharedPreference
:
SharedPreferences mPrefs =
getSharedPreferences("mypref",MODE_PRIVATE);
int howMany=mPrefs.getInt("counter",0);
Gson gson = new Gson();
for(int i=1;i<=howMany;i++) {
String json = mPrefs.getString("details" + howMany, "");
Student student = gson.fromJson(json, Student.class);
Log.e("tag","loop number"+i);
Log.e("Tag", student.getName());
}
При запуске приложения моим первым именем пользователя было «Pra», и кнопка отправки была нажата на первомActivity
, чтобы это было сохранено в SharedPreferences
.
Имя второго пользователя было "Suv", и это значение также было сохранено в SharedPreferences
.Проблема сейчас в том, что значение имени первого пользователя также изменилось.Я не получаю это.
Я сохранил счетчик, чтобы у каждого объекта была уникальная запись в SharedPreferences, но в журналах показано следующее:
05-23 10:45:48.208 18409-18409/com.example.com.applicationstudent
E/tag: counter: 2
05-23 10:45:48.212 18409-18409/com.example.com.applicationstudent
E/tag: loop number1
05-23 10:45:48.212 18409-18409/com.example.com.applicationstudent
E/Tag: suv
05-23 10:45:48.212 18409-18409/com.example.com.applicationstudent
E/tag: loop number2
05-23 10:45:48.212 18409-18409/com.example.com.applicationstudent
E/Tag: suv
Опять же, я не хочу использовать базу данных, я хочуиспользуйте SharedPreferences
.