如何在应用程序首次启动时加载共享首选项



我正在使用一个名为SettingsActivity的活动,它扩展了PreferenceFragmentCompat。当应用程序第一次启动MainActivity时,我试图通过getDefaultSharedPreferences(getApplicationContext())获取首选项,但没有成功,因为它们只有在我启动"设置"活动时才会加载。

为了证明这一点,我检查了文件shared_preferences.xml,只有当我打开SettingsActivity时,它才会被填充。

从这个意义上讲,我如何才能强制加载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);
}
}

设置活动

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
}
}

在活动的onCreate中放置以下代码

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

参考Android开发者文档

相关内容

  • 没有找到相关文章

最新更新