Search code examples
androidsharedpreferencespreferencespreferenceactivitypreferencefragment

Reusing PreferenceFragment with multiple preference files


Scenario: My android application is acting as a server. There are N number of clients that are connected to the server. There is a set of settings for the clients which user can configure from the server (android app). so basically I am sending the user preferences over the socket to respective client. The set of settings is same for all the clients but I need to maintain the the settings state for each client. for example:

Set of Settings:

Settings 1
Settings 2
Settings 3

Now user configures the above set for 2 clients as follows: For client1:

Settings 1 :true
Settings 2 :false
Settings 3 :false

For Client2:

Settings 1 :false
Settings 2 :false
Settings 3 :false

now in the android app when user selects the client1 then client1 specific set should be shown.

Problem: I am not able to save client wise state of settings.

My Expertise: I am a beginner in android programming.

My progress so far: As per my understanding of the scenario I need to make client wise different-2 shared preference file. I created a generic preference fragment for the set of settings. As the settings is same for all the clients so I am reusing the preference fragment. I also tried to specify preference files dynamically for each client:

       SharedPreferences sharedPreference = context.getSharedPreferences(
                "<Here I dynamically specify prefs file name>", Context.MODE_PRIVATE);

but it is not working.

Please help.


Solution

  • Answering to my own question, hope this may help someone in future: We need to create different-2 preference files in this scenario. we can do this as follows:

    getPreferenceManager().setSharedPreferencesName("preference_file_name");
    

    and later on to load that particular preference file

    getSharedPreferences("preference_file_name", Context.MODE_PRIVATE);