How can I keep on adding preferences when i click one?

后端 未结 2 1612
无人及你
无人及你 2021-01-24 13:10

I have a problem. I want to give a user freedom to select a number of Bluetooth devices in my app. Now I dont know how many Bluetooth devices will there be so I was wondering is

2条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-24 13:59

    Not sure if I'm understanding this completely, but it sounds like you would want to add a preference for each bluetooth device. To do this, you would want to do something like this:

    Inside of the function in which you add the bluetooth device:

    SharedPreferences prefs = getDefaultSharedPreferences();
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("BT" + nameOfDevice, whateverYouWantToStoreAboutTheDevice);
    editor.commit();
    

    If you want to retrieve all the preferences for each bluetooth device, you could get the Set of all keys in your SharedPreferences file, figure out which ones have the "BT" prefix, and pull each of those preferences. Something like this:

    Set keySet = prefs.getAll().keySet();
    for(String key : keySet){
       if(key.startsWith("BT"){
           String theValue = prefs.getString(key, null);
           //Do whatever with that value
       }
    }
    

    However, it just dawned on me that it sounds like you're talking about dynamically adding Preference Views. That's something else entirely =).

    Edit: Here's how to add a Preference with a View programmatically from your preferences Activity:

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.prefs);
            CheckBoxPreference checkbox = new CheckBoxPreference(this);
            checkbox.setTitle("This is a checkbox preference");
            ((PreferenceScreen)findPreference("PREFSMAIN")).addPreference(checkbox);
        }
    

    In this example, I gave my PreferenceScreen a key of "PREFSMAIN". You could add any kind of Preference you wanted in this manner.

提交回复
热议问题