Получение общего предпочтения во фрагменте - PullRequest
0 голосов
/ 12 июня 2018

У меня возникли проблемы с общими настройками во фрагменте Android.В моем MainActivity onLoad я проверяю общее предпочтение, если оно истинно, затем я открываю фрагмент A.

SharedPreferences prefs = getApplicationContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
    boolean status = prefs.getBoolean("show_eula_key", false);
    if(status == true){
        EulaFragment eulaFragment = new EulaFragment();
        eulaFragment.show(getSupportFragmentManager(), null);
}

В моем фрагменте A после нажатия кнопки Accept на onClick я обновляю общее предпочтение на false:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean("show_eula_key", false).commit();
            dismiss();

Однако, хотя я выбрал принятое и перезапустил приложение, при повторном запуске приложения оно продолжает открывать фрагмент A. Есть идеи?

Спасибо!

Ответы [ 5 ]

0 голосов
/ 12 июня 2018

во фрагменте A

SharedPreferences prefs =getActivity().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
        prefs.edit().putBoolean("show_eula_key",false).apply();
0 голосов
/ 12 июня 2018

Измените свой второй код на

SharedPreferences prefs = getContext().getSharedPreferences("EULA_SHARED_PREFERENCE", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("show_eula_key", false).apply();
0 голосов
/ 12 июня 2018

используйте что-то вроде этого

editor.putBoolean("show_eula_key", false).apply();
0 голосов
/ 12 июня 2018

проблема в том, что вы получаете show_eula_key из EULA_SHARED_PREFERENCE и сохраняете в настройках по умолчанию, вам нужно, чтобы данные из настроек были именно такими, как вы их сохраняете

0 голосов
/ 12 июня 2018

Вы используете два разных файла:

SharedPreferences prefs = getApplicationContext (). GetSharedPreferences ("EULA_SHARED_PREFERENCE", MODE_PRIVATE);

и

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences (getActivity ());

Вы должны использовать то же самое в обоих случаях.(совет: активность - это контекст)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...