随着应用程序的运行,我有多个视图来来去去。我希望每个视图都有自己的个人偏好,这些偏好存储为视图的 ID 标签。以上是子首选项引用的“常规首选项”,以在创建视图时获取其默认值。
现在,我将常规首选项设置为默认的 SharedPreferences。但我不知道如何创建新首选项并设置活动 UI,以便用户可以更改它们。它与设置 SharedPreferences 几乎相同吗?
随着应用程序的运行,我有多个视图来来去去。我希望每个视图都有自己的个人偏好,这些偏好存储为视图的 ID 标签。以上是子首选项引用的“常规首选项”,以在创建视图时获取其默认值。
现在,我将常规首选项设置为默认的 SharedPreferences。但我不知道如何创建新首选项并设置活动 UI,以便用户可以更改它们。它与设置 SharedPreferences 几乎相同吗?
这可能不是您所要求的,但这就是我所做的:
在我的主要活动中,当我调用首选项活动时,我将自定义首选项文件的名称作为意图中的额外数据传递给它:
static final String EXTRA_PREFERENCES_NAME = "android.intent.extra.PREFERENCES_NAME";
...
Intent intent = new Intent(this, Preferences.class);
intent.putExtra(EXTRA_PREFERENCES_NAME, preferencesName);
startActivity(intent);
然后,在我的首选项活动中,我获取自定义首选项名称并将其设置如下:
public class Preferences extends PreferenceActivity {
private String preferencesName = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get the custom preferences name from the extra data in the intent
preferencesName = getIntent().getExtras().getString(MainActivity.EXTRA_PREFERENCES_NAME);
// set the preferences file name
getPreferenceManager().setSharedPreferencesName(preferencesName);
// get the default preferences from XML
addPreferencesFromResource(R.xml.preferences);
}
最后,在我的主要活动中,我得到了这样的特定偏好:
SharedPreferences preferences = getSharedPreferences(preferencesName, MODE_PRIVATE);
String somePreference = preferences.getString("somePreference", defaultValue);
不知何故,我不值得评论,但要写一个答案,所以我们开始吧:我真的很想知道如何将 sharedPreferences 与 PreferencesActivity 一起使用,而不是 DefaultSharedPreferences。
我能想到的一种方法是让preferenceActivity将值保存到defaultSharedPreferences,然后读出这些值并将它们保存到与名称相关联的sharedPreferences中,该名称与保存的值的类型相匹配。
但这似乎是非常错误的。那么你们是怎么做到的呢?或者您是否将任何 PreferencesActivties 中的所有值保存到 defaultSharedPreferences 中?
您可以使用 PreferenceManager 来实现目标。