我有多个视图随着应用程序的运行而来去。我希望每个视图都有自己的个人首选项,这些首选项存储为视图的ID标记。上面是“常规首选项”,子首选项引用它们在创建视图时获取其默认值。
现在我已经设置了“常规首选项”是默认的SharedPreferences。但我不知道如何创建新的首选项并设置活动UI,以便用户可以更改它们。它与设置SharedPreferences几乎相同吗?
答案 0 :(得分:5)
这可能不是你所要求的,但这就是我的所作所为:
在我的主要活动中,当我调用首选项活动时,我将自定义首选项文件的名称作为意图中的额外数据传递给它:
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);
答案 1 :(得分:0)
不知怎的,我不值得发表评论,但要写一个答案,所以我们走了: 我真的想知道如何将sharedPreferences与PreferencesActivity一起使用而不是DefaultSharedPreferences。
我可以想到实现此目的的一种方法是让preferenceActivity将值保存到defaultSharedPreferences,然后将这些值读出并保存到与名称相关联的sharedPreferences中,该名称与保存的值类型相匹配。
但这似乎非常错误。那么你们是怎么做到的?或者您将所有的值从任何PreferencesActivties保存到defaultSharedPreferences?
答案 2 :(得分:-2)
您可以使用PreferenceManager来实现目标。