From d11cca016889f20a851734b2ec1dc1daf10cf0ee Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Wed, 16 Mar 2016 14:27:12 -0400 Subject: [PATCH] Fix Settings home lifecycle Bug: 27330440 Bug: 26268813 Change-Id: Ibb3729c9872be2488db3741ec72ba5a43e66db5f --- .../settings/dashboard/DashboardSummary.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 69fd8e7689f..448a77dfbf2 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -58,11 +58,14 @@ public class DashboardSummary extends InstrumentedFragment private static final String SUGGESTIONS = "suggestions"; + private static final String EXTRA_SCROLL_POSITION = "scroll_position"; + private FocusRecyclerView mDashboard; private DashboardAdapter mAdapter; private SummaryLoader mSummaryLoader; private ConditionManager mConditionManager; private SuggestionParser mSuggestionParser; + private LinearLayoutManager mLayoutManager; @Override protected int getMetricsCategory() { @@ -133,17 +136,28 @@ public class DashboardSummary extends InstrumentedFragment return inflater.inflate(R.layout.dashboard, container, false); } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt(EXTRA_SCROLL_POSITION, mLayoutManager.findFirstVisibleItemPosition()); + } + @Override public void onViewCreated(View view, Bundle bundle) { mDashboard = (FocusRecyclerView) view.findViewById(R.id.dashboard_container); - LinearLayoutManager llm = new LinearLayoutManager(getContext()); - llm.setOrientation(LinearLayoutManager.VERTICAL); - mDashboard.setLayoutManager(llm); + mLayoutManager = new LinearLayoutManager(getContext()); + mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); + if (bundle != null) { + int scrollPosition = bundle.getInt(EXTRA_SCROLL_POSITION); + mLayoutManager.scrollToPosition(scrollPosition); + } + mDashboard.setLayoutManager(mLayoutManager); mDashboard.setHasFixedSize(true); mDashboard.setListener(this); mAdapter = new DashboardAdapter(getContext()); mAdapter.setConditions(mConditionManager.getConditions()); mAdapter.setSuggestions(mSuggestionParser); + mDashboard.setAdapter(mAdapter); mSummaryLoader.setAdapter(mAdapter); ConditionAdapterUtils.addDismiss(mDashboard); @@ -164,7 +178,6 @@ public class DashboardSummary extends InstrumentedFragment // recheck to see if any suggestions have been changed. mAdapter.setSuggestions(mSuggestionParser); - mDashboard.setAdapter(mAdapter); long delta = System.currentTimeMillis() - start; Log.d(TAG, "rebuildUI took: " + delta + " ms");