Fix tuner sub-screens attach

Seems that when preferences are attached has changed, so we need to
make sure any sub preference screense explicitly own their preferences.

Test: manual
Change-Id: Id28c30367417fc7dbe74c3970a8e19a031ea6d8d
Fixes: 36766199
This commit is contained in:
Jason Monk
2017-03-31 11:30:14 -04:00
parent 537fd18eaf
commit ae39cb9c60

View File

@@ -110,10 +110,35 @@ public class TunerActivity extends SettingsDrawerActivity implements
}
public static class SubSettingsFragment extends PreferenceFragment {
private PreferenceScreen mParentScreen;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferenceScreen((PreferenceScreen) ((PreferenceFragment) getTargetFragment())
.getPreferenceScreen().findPreference(rootKey));
mParentScreen =
(PreferenceScreen) ((PreferenceFragment) getTargetFragment())
.getPreferenceScreen().findPreference(rootKey);
PreferenceScreen screen =
getPreferenceManager().createPreferenceScreen(
getPreferenceManager().getContext());
setPreferenceScreen(screen);
// Copy all the preferences over to this screen so they go into the attached state.
while (mParentScreen.getPreferenceCount() > 0) {
Preference p = mParentScreen.getPreference(0);
mParentScreen.removePreference(p);
screen.addPreference(p);
}
}
@Override
public void onDestroy() {
super.onDestroy();
// Copy all the preferences back so we don't lose them.
PreferenceScreen screen = getPreferenceScreen();
while (screen.getPreferenceCount() > 0) {
Preference p = screen.getPreference(0);
screen.removePreference(p);
mParentScreen.addPreference(p);
}
}
}