Фрагмент получает неверные данные общих предпочтений - PullRequest
0 голосов
/ 20 декабря 2018

Я храню 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());

}

, но он получает неправильную позицию, которую я пытаюсь использоватьтот же код в действии и его работа без проблем безупречна, но я не знаю, почему этот фрагмент занимает неправильную позицию, и спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...