2016-11-14 101 views
2

我有3个活动: 甲 - >乙 - “ç安卓:RecyclerView GridLayoutManager - 恢复滚动位置不正常工作

在活动B,我使用RecyclerView的GridlayoutManager填充。我要保存的滚动状态,当我浏览到活动C和恢复的滚动状态时,我从活动C.

private RecyclerView mImgList; 
private GridLayoutManager mRecyclerGridMan; 
private final String KEY_RECYCLER_STATE = "recycler_state"; 
private Parcelable mListState = null; 
private static Bundle mBundleRecyclerViewState; 

回到活动B。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
protected void onPause() 
{ 
    super.onPause(); 
    mBundleRecyclerViewState = new Bundle(); 
    mListState = mImgList.getLayoutManager().onSaveInstanceState(); 
    mBundleRecyclerViewState.putParcelable(KEY_RECYCLER_STATE, mListState); 
} 

@Override 
protected void onResume() 
{ 
    super.onResume(); 
    if (mBundleRecyclerViewState != null) { 
     mListState = mBundleRecyclerViewState.getParcelable(KEY_RECYCLER_STATE); 
     mImgList.getLayoutManager().onRestoreInstanceState(mListState); 
    } 
} 

但是,当我从活动B按后退按钮,进入到活动A,并从活动A.导航回活动B

+0

你有没有检查过你的'mBundleRecyclerViewState'确实不是'null'? –

+0

@VladMatvienko是的,我检查了,当我从活动C回到活动B时,mBundleRecyclerViewState不为空。 –

+0

你回到活动后再次填充你的列表吗? –

回答

0

在onRestoreInstanceState恢复状态()

protected void onRestoreInstanceState(Bundle state) { 
super.onRestoreInstanceState(state); 

// Retrieve list state and list/item positions 
if(state != null) 
    mListState = mBundleRecyclerViewState.getParcelable(KEY_RECYCLER_STATE); 
} 
这个工程
+0

我试过了,但没有工作,甚至滚动状态也没有恢复,当导航到活动A到B,这是工作之前 –

+0

仍然不工作的兄弟 –

+0

以下是完整的代码链接:https://github.com /zayid/Blur_Wallpaper/blob/master/app/src/main/java/com/whackyard/whatsappwalls/MainActivity.java –

相关问题