public static boolean onCreatePreferences(@NonNull PreferenceFragmentCompat f, @Nullable String rootKey) { if (rootKey != null && !PreferenceScreenNavigationStrategy.DEFAULT_ROOT_KEY.equals(rootKey)) { f.setPreferenceScreen((PreferenceScreen) f.findPreference(rootKey)); return true; } return false; }
private void navigateToPreferenceScreen(@NonNull PreferenceScreen preference) { if (preference.getKey() == null) { throw new IllegalArgumentException("PreferenceScreen needs a non-null key."); } mFragment.setPreferenceScreen(preference); if (mCallbacks != null) { mCallbacks.onNavigateToPreferenceScreen(preference); } }
@Deprecated @Override public boolean onPreferenceStartScreen(PreferenceFragmentCompat preferenceFragmentCompat, PreferenceScreen preferenceScreen) { _prefScreenBackstack.add(getPreferenceScreen()); preferenceFragmentCompat.setPreferenceScreen(preferenceScreen); updatePreferenceIcons.callback(this); onPreferenceScreenChangedPriv(preferenceFragmentCompat, preferenceScreen); return true; }
private void navigateToPreferenceScreen(@NonNull PreferenceScreen preference, boolean forward) { if (preference.getKey() == null) { throw new IllegalArgumentException("PreferenceScreen needs a non-null key."); } if (forward) { String key = mFragment.getPreferenceScreen().getKey(); RecyclerView list = mFragment.getListView(); if (list != null) { final View firstChild = list.getChildAt(0); if (firstChild != null) { int position = list.getChildAdapterPosition(firstChild); int offset = firstChild.getTop(); mScrollPositions.put(key, new Pair<>(position, offset)); } } } mFragment.setPreferenceScreen(preference); if (!forward) { String key = preference.getKey(); if (mScrollPositions.containsKey(key)) { Pair<Integer, Integer> scroll = mScrollPositions.get(key); final int position = scroll.first; final int offset = scroll.second; onRestoreScrollPosition(position, offset); } } if (mCallbacks != null) { mCallbacks.onNavigateToPreferenceScreen(preference); } }