How can a PreferenceActivity use a custom preferen

2019-03-14 11:38发布

My first attempt at preferences was without knowledge of PreferenceActivity. So now I have an app that stores all user preferences in a specific preference file.

I want to migrate to using a PreferenceActivity but I also want my users to keep their preferences.

Is there a way to tell my PreferenceActivity to use that specific file for all preferences?

3条回答
该账号已被封号
2楼-- · 2019-03-14 12:08

You could read all the preferences at the beginning of your app, and then store them in the Preferences using

Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.putBoolean("yourPreference", true);
e.putString("yourOtherPreference", "This is the Value");
...
e.commit();

I hope that helps

查看更多
beautiful°
3楼-- · 2019-03-14 12:17

It may be too late to post this but you can find a nice solution here

You set the name of the default shared preferences file beforehand like this:

public class MyPreferencesActivity extends PreferenceActivity {
    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         PreferenceManager prefMgr = getPreferenceManager();
         prefMgr.setSharedPreferencesName("my_preferences");
         prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE);

         addPreferencesFromResource(R.xml.preferences);
    }
}

I hope this helps somebody.

Regards.

查看更多
戒情不戒烟
4楼-- · 2019-03-14 12:23

Maaalte is correct, what you want to do is onCreate test for the existence of your custom file and if it's there, rename it to standard shared preferences filename.

Another option is to read your old prefs one-by-one and use the shared preferences API to add them as you read them and then delete your old prefs when you are done.

查看更多
登录 后发表回答