В настоящее время я создаю приложение Android, в котором отображаются цитаты известных людей. У меня есть домашний экран и 2 других экрана, на которых я отображаю все цитаты, а на другом - любимые цитаты.
Таким образом, когда я нажимаю кнопку «Мне нравится» на экране AllQuotesActivity, цитата и автор будут сохранены в LinkedHashSet, который будет сохранен в SharedPreferences, поэтому моя активность FavouriteQuotes может получить данные. Я могу получить данные, но данные смешаны, хотя другие ссылки говорят, что LinkedHashSet поддерживает порядок вставки. Может я что то не так сделал. Вот важные фрагменты кода:
AllQuotesActivity. java:
SharedPreferences sharedPref;
Set<String> set = new LinkedHashSet();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.all_quotes);
Resources res = getResources();
Context context = getApplicationContext();
this.sharedPref = context.getSharedPreferences(
"MyPref", Context.MODE_PRIVATE);
final String[] quotesAndAuthors = res.getStringArray(R.array.quotes);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
set.add(quotesAndAuthors[counter]);
set.add(quotesAndAuthors[counter + 1]);
}
});
}
@Override
public void onPause() {
super.onPause();
Log.d("RichQuotes", "Its paused mkay");
Editor editor = sharedPref.edit();
editor.putStringSet("quotesAndAuthors", this.set);
editor.commit();
}
}
FavouriteQuotesActivity. java:
SharedPreferences sharedPref;
Set<String> set = new LinkedHashSet();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favourite_quotes);
Resources res = getResources();
Context context = getApplicationContext();
this.sharedPref = context.getSharedPreferences(
"MyPref", Context.MODE_PRIVATE);
set = sharedPref.getStringSet("quotesAndAuthors", null);
for (Iterator<String> it = set.iterator(); it.hasNext(); ) {
String s = it.next();
Log.v("test", s);
}
Я удалил ненужный код.
В FavouriteQuotesActivity. java Я регистрирую набор для проверки его значений. Лог-выходы и выходы на экране одинаковы, оба несортированы одинаково.