Как загрузить общие настройки при первом запуске приложения - PullRequest
0 голосов
/ 27 марта 2020

Я использую действие под названием SettingsActivity, которое расширяет PreferenceFragmentCompat. Когда приложение запускается в первый раз MainActivity, я пытаюсь получить настройки через getDefaultSharedPreferences(getApplicationContext()), но безуспешно, поскольку они загружаются только при запуске действия «Настройки».

Чтобы доказать это, я проверил файл shared_preferences. xml и он заполняется только при открытии SettingsActivity.

. В этом смысле, как я могу принудительно загрузить настройки в MainActivity?

MainActivity

public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Map<String, ?> allPreferences = getDefaultSharedPreferences(MainActivity.applicationContext).getAll();
        Log.d(Class.forName(), allPreferences.isEmpty()); //prints true

        Intent intent_settings = new Intent(activityContext, SettingsActivity.class);
        startActivity(intent_settings);
     }
}

НастройкиActivity

public class SettingsActivity extends PreferenceFragmentCompat {
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        setPreferencesFromResource(R.xml.preferences, rootKey);

        Map<String, ?> allPreferences = getPreferenceManager().getSharedPreferences().getAll();
        Log.d(Class.forName, allPreference.isEmpty()); // prints false
    }
}

1 Ответ

0 голосов
/ 27 марта 2020

В вашей деятельности onCreate поместите следующий код

PreferenceManager.setDefaultValues(this, R.xml.preferences, false);

ссылка Android Документы для разработчиков

...