У меня есть несколько вложенных PreferenceScreen
в моих PreferenceActivity
, а под ними серия CheckBoxPreference
.
Все работает хорошо, но всякий раз, когда устройство поворачивается, PreferenceActivity возвращается к основномуPreferenceScreen
, независимо от того, на каком вложенном экране предпочтений находился пользователь.
Это точно так же, как и в предыдущих вопросах SO, где решением было добавить ключ на экран PreferenceScreen:
Когда моя PreferenceActivity вращается, он не запоминает, какой PreferenceScreen был открыт
Как предотвратить выход из экрана внутренних настроек при наличии конфигурацииизменить
Вложенный экран настроек закрывается при изменении ориентации экрана в Android
Я добавил ключи ко всеммой PreferenceScreen и решение работает, пока я использую устаревший способ:
public class Settings extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
Проблема в том, что я использую PreferenceFragment
, как в этот SO ответ (итакже здесь ).
Код:
public class Settings extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getFragmentManager().
beginTransaction().
replace(android.R.id.content, new MyPreferenceFragment()).
commit();
}
public static class MyPreferenceFragment extends PreferenceFragment
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
}
Итак, как сохранить внутренний PreferenceScreen открытым после изменения ориентации экрана, если это возможно с текущим кодом?
Я вижу это для Preferences Google теперь рекомендует AppCompatActivity и PreferenceFragmentCompat, но я бы предпочел не использовать никаких библиотек, даже Google, специально для такой небольшой детали.