Я храню ArrayList и Int в Shared Preference, и во фрагменте я вызываю storage.arraylist (). Get (storage.int ());чтобы получить позицию в массиве, но каждая деятельность получает правильную позицию, кроме фрагмента, она получает неправильную позицию
Моя цель состоит в том, чтобы заставить фрагмент получить правильную позицию в int, который хранится, но он получает обратную от этогоint, если int равен 15, а arraylist.size равен 16, фрагмент получает 14, но в любом действии позиция get 15, я попытался во фрагменте просто вставить это int + 1, чтобы получить право, но неожиданно он получил ошибкупотому что int это равно arraylist.size
Здесь, где я добавляю элемент в arraylist
storage.storeAudio(CardList.get(position));
if(!app.ismServiceBound()) {
fragment.setSlide_up();
}
app.PlayerBroadCast(1);
fragment.Start();
Метод storeAudio
public void storeAudio(ModelCardView model) {
preferences = context.getSharedPreferences(STORAGE, Context.MODE_PRIVATE);
if (loadAudio() != null) {
arrayList = loadAudio();
}
arrayList.add(model);
SharedPreferences.Editor editor = preferences.edit();
Gson gson = new Gson();
String json = gson.toJson(arrayList);
editor.putString("audioArrayList", json);
editor.apply();
}
ВыполнениеBroadCast в первом коде
//Load data from SharedPreferences
audioList = storage.loadAudio();
audioIndex = audioList.size();
audioIndex--;
if (audioIndex != -1 && audioIndex < audioList.size()) {
//index is in a valid range
activeAudio = audioList.get(audioIndex);
storage.storeAudioIndex(audioIndex);
} else {
stopSelf();
}
В конце фрагмент начинает получать arraylist и int для отображения некоторой информации
public void Start(){
if(!app.ismServiceBound()) {
view.setVisibility(View.GONE);
}else if (app.ismServiceBound() && storage.getState()) {
start.setImageResource(R.drawable.play);
view.setVisibility(View.VISIBLE);
}else if(app.ismServiceBound() && !storage.getState()){
start.setImageResource(R.drawable.pause);
view.setVisibility(View.VISIBLE);
}
songName.setText(storage.loadAudio().get(storage.loadAudioIndex()).getId());
bandName.setText(storage.loadAudio().get(storage.loadAudioIndex()).getSinger());
}
, но он получает неправильную позицию, которую я пытаюсь использоватьтот же код в действии и его работа без проблем безупречна, но я не знаю, почему этот фрагмент занимает неправильную позицию, и спасибо за помощь.