@Override public boolean onPreferenceStartScreen(PreferenceFragmentCompat caller, PreferenceScreen preference) { if (LOCAL_LOGV) { Log.v(TAG, "onPreferenceStartScreen(" + preference + ")"); } // API level 9 compatibility if (preference.getFragment() == null) { preference.setFragment(preference.getKey()); return onPreferenceStartFragment(caller, preference); } else { return false; } }
/** * Call this when the preference screen representative item has been clicked * (perhaps in {@link PreferenceFragmentCompat#onPreferenceTreeClick(android.support.v7.preference.Preference)}. * * @param preference */ public void onPreferenceScreenClick(@NonNull PreferenceScreen preference) { mStack.push(preference.getKey()); // Store new screen key. navigateToPreferenceScreen(preference, true); }
@Override public boolean onPreferenceStartScreen(PreferenceFragmentCompat preferenceFragmentCompat, PreferenceScreen preferenceScreen) { SettingsFragment fragment = new SettingsFragment(); Bundle args = new Bundle(); args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, preferenceScreen.getKey()); fragment.setArguments(args); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.replace(R.id.fragment, fragment, preferenceScreen.getKey()); ft.addToBackStack(preferenceScreen.getKey()); ft.commitAllowingStateLoss(); return true; } }
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); } }
@Override public boolean onPreferenceStartScreen(PreferenceFragmentCompat preferenceFragmentCompat, PreferenceScreen preferenceScreen) { SettingsFragment fragment = new SettingsFragment(); Bundle args = new Bundle(); args.putString(PreferenceFragmentCompat.ARG_PREFERENCE_ROOT, preferenceScreen.getKey()); fragment.setArguments(args); FragmentTransaction ft = preferenceFragmentCompat.getFragmentManager().beginTransaction(); ft.add(R.id.fragment_container, fragment, preferenceScreen.getKey()); ft.addToBackStack(preferenceScreen.getTitle().toString()); ft.commit(); toolbar.setTitle(preferenceScreen.getTitle()); 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); } }
@Override public boolean onPreferenceStartScreen(final PreferenceFragment preferenceFragment, final PreferenceScreen preferenceScreen) { final PreferenceFragment frag = buildPreferenceFragment(R.xml.prefs, preferenceScreen.getKey()); startPreferenceFragment(frag); return true; }
/** * Call this inside {@link android.support.v7.preference.PreferenceFragmentCompat.OnPreferenceStartScreenCallback#onPreferenceStartScreen(PreferenceFragmentCompat, PreferenceScreen)}. * * @param fragmentManager Fragment manager form activity or calling fragment * @param preferenceFragmentCompat The old preference fragment about to be replaced. * @param preferenceScreen The new root of preference hierarchy. */ public void onPreferenceStartScreen(final @NonNull FragmentManager fragmentManager, final @NonNull PreferenceFragmentCompat preferenceFragmentCompat, final @NonNull PreferenceScreen preferenceScreen) { final String key = preferenceScreen.getKey(); PreferenceFragmentCompat f = buildFragment(key); FragmentTransaction ft = fragmentManager.beginTransaction(); if (mCustomAnimations) { ft.setCustomAnimations(mAnimEnter, mAnimExit, mAnimPopEnter, mAnimPopExit); } ft.replace(preferenceFragmentCompat.getId(), f, preferenceFragmentCompat.getTag()) .addToBackStack(key) .commit(); }