чем заменить устаревший метод getFragmentManager () на (API 28)? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть приложение для Android, над которым я работаю, min sdk = 21. В нем я использую пользовательскую PreferenceActivity, которая, в свою очередь, вызывает PreferenceFragment. Однако после недавнего обновления до API 28 я заметил, что метод getFragmentManager () устарел. Я пролистал соответствующую страницу разработчиков Android , где узнал, что класс Fragment устарел или что-то в этом роде. Для ясности мой код класса PreferencesActivity выглядит следующим образом:

public class PreferencesActivity extends PreferenceActivity{
static int layout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        boolean isDark = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("darkTheme", false);
        if (isDark) setTheme(R.style.AppTheme_Dark_NoActionBar_BlendStatusBar);
        layout = isDark? R.style.AlertDialogCustom_Dark: R.style.AlertDialogCustom;
        super.onCreate(savedInstanceState);
        // TODO: 08/09/2018 Deprecated
        getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit();
}

    public static class PreferencesFragment extends PreferenceFragment {
        // Preferences code here...
    }

1 Ответ

0 голосов
/ 16 сентября 2018

Да, вы правы.getFragmentManager и android.app.Fragment были объявлены устаревшими в API 28. Вместо этого теперь мы должны использовать Fragment from support library и getSupportFragmentManager соответственно.

Но если вы беспокоитесь об этих устареваниях, то вам также следует отметить, что PreferenceFragments также не рекомендуется в API 28.

Вместо этого следует использовать PreferenceFragmentCompat

...