0

关于这个问题有很多问题,但我尝试的任何方法似乎都不起作用。我要做的就是恢复嵌套在 Fragment 中的 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);
    }


}

此代码位于 fragment.java 文件中。

当我打开一个新片段然后返回到这个片段时,RecyclerView 设置为顶部,而不是之前的滚动位置。

任何帮助表示赞赏,如果需要,我很乐意提供更多信息!干杯!

4

1 回答 1

0

当我更改标签时,我通过“隐藏”片段解决了我的问题。 这个链接很有帮助!这样片段就不会被破坏,生命周期也不会重新开始。

于 2018-11-11T13:05:56.977 回答