如何在第一次应用程序启动时加载共享首选项
How to load Shared Preferences on first Application start
我正在使用名为 SettingsActivity
的 activity 扩展 PreferenceFragmentCompat
。当应用程序第一次启动时 MainActivity
,我尝试通过 getDefaultSharedPreferences(getApplicationContext())
获取首选项但没有成功,因为它们仅在我启动设置时加载 activity.
为了证明这一点,我检查了文件 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);
}
}
设置活动
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
}
}
在您的 activity 的 onCreate
中放置以下代码
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
我正在使用名为 SettingsActivity
的 activity 扩展 PreferenceFragmentCompat
。当应用程序第一次启动时 MainActivity
,我尝试通过 getDefaultSharedPreferences(getApplicationContext())
获取首选项但没有成功,因为它们仅在我启动设置时加载 activity.
为了证明这一点,我检查了文件 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);
}
}
设置活动
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
}
}
在您的 activity 的 onCreate
中放置以下代码
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);