我嘗試了很多可能的解決方案,但它們沒有用處,只是我不想用onBackPressed
來實現我試圖用Intent
回到之前的Activity
,我試圖通過putExtra()
來通過這個位置,並從上一個活動的意圖中獲取位置並使用,但是活動被重新創建,並且滾動不起作用,我也嘗試使用onSavedInstanceState()
和onRestoreInstanceState
但我得到了同樣的結果,任何人都可以給我一個想法?提前致謝。如何保存RecyclerView的最後一個項目位置,當從第二個Activity返回到使用Intent的第一個Activty
我也想知道爲什麼下面的方法不工作?
@Override
protected void onPause() {
super.onPause();
lastFirstVisiblePosition = ((LinearLayoutManager)
recyclerView.getLayoutManager()).findLastVisibleItemPosition();
Log.d("bePos", String.valueOf(lastFirstVisiblePosition));
}
@Override
protected void onResume() {
super.onResume();
Log.d("lastPos", String.valueOf(lastFirstVisiblePosition));
recyclerView.scrollToPosition(lastFirstVisiblePosition);
}
更新 我解決了保存的最後一個位置的問題,但後來我發現,我不能滾動到RecyclerView
那個位置,因爲我使用分頁,RecyclerView
只是不能滾動到項目適配器不加載,所以如何解決這樣的問題?
你的邏輯有缺陷,你發送一個意圖啓動一個活動,而不是簡單地把現有的活動帶到前臺,正確的方式是使用'onBackPressed()'你可能嘗試將你的第一個活動設置爲'singleTask'你的清單,如果你堅持發送一個已經在堆棧中運行的活動的意圖。記得'onNewIntent'會被調用,我相信它會是'onNewIntent','onPause','onResume' - 但不要引用我.. –
現在主要的問題不在於保存位置,而是RecyclerView不是在重新創建活動@MarkKeen –
後滾動到該位置,如果其「重新創建」該活動,則其僅具有默認初始化實例變量值的另一實例。 –