Восстановление позиции прокрутки RecyclerView внутри фрагмента - PullRequest
0 голосов
/ 10 ноября 2018

По этому вопросу более чем достаточно вопросов, но, похоже, ни один из методов, которые я пробую, не работает.Все, что я пытаюсь сделать, это восстановить "положение прокрутки" RecyclerView, который вложен во фрагмент.Например, когда новый фрагмент открывается (с помощью .replace ()), а затем закрывается, исходный фрагмент показывает тот же экран, который был до открытия нового фрагмента, т.е.положение прокрутки RecyclerView восстановлено;однако это не то, что происходит.Я использую нижнюю навигацию, чтобы открыть фрагменты.Ниже приведен метод, который я использую, и который, как я думал, будет работать, поскольку он является наиболее распространенным ответом на эту проблему.

private Parcelable recLayoutState;
private Bundle recBundle;
private static String LIST_STATE = "LIST_STATE";

@Override
public void onPause(){
    super.onPause();

    recLayoutState = homeRecyclerLayoutManager.onSaveInstanceState();
    recBundle = new Bundle();
    recBundle.putParcelable(LIST_STATE,recLayoutState);
}

@Override
public void onResume(){
    super.onResume();

    if (recBundle != null){
        recLayoutState = recBundle.getParcelable(LIST_STATE);
        homeRecyclerLayoutManager.onRestoreInstanceState(recLayoutState);
    }


}

Этот код находится в файле фрагмента. Java.

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

Любая помощь приветствуется, и я рад предоставить больше информации, если это необходимо!Ура!

1 Ответ

0 голосов
/ 11 ноября 2018

Я решил свою проблему, «скрывая» фрагменты, когда менял вкладки. Эта ссылка была очень полезной! Таким образом, фрагмент не разрушается и жизненный цикл не перезапускается.

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