我有问题。我想让用户自由选择我的应用程序中的许多蓝牙设备。现在我不知道有多少蓝牙设备,所以我想知道是否可以给用户一个选项,点击“添加新的蓝牙设备”自定义首选项并打开一个新的首选项屏幕,让他选择新的蓝牙设置设备
总之,显示器看起来像:
添加新的蓝牙设备..
如果用户添加一个,则应该如下所示:
蓝牙设备1
添加新的Blutooth设备..
如果用户添加另一个,它应该如下所示:
蓝牙设备1
蓝牙设备2
添加新的蓝牙设备..
我知道如何使用标准首选项和基本编码。我唯一想知道的是如何在运行时继续为这些设备添加设置。我将不胜感激。感谢。
答案 0 :(得分:7)
不确定我是否完全理解这一点,但听起来您会想要为每个蓝牙设备添加首选项。要做到这一点,你可能想做这样的事情:
在您添加蓝牙设备的功能内部:
SharedPreferences prefs = getDefaultSharedPreferences();
SharedPreferences.Editor editor = prefs.edit();
editor.putString("BT" + nameOfDevice, whateverYouWantToStoreAboutTheDevice);
editor.commit();
如果要检索每个蓝牙设备的所有首选项,您可以获取SharedPreferences文件中的所有密钥集,找出哪些具有“BT”前缀,并拉出每个首选项。像这样:
Set<String> keySet = prefs.getAll().keySet();
for(String key : keySet){
if(key.startsWith("BT"){
String theValue = prefs.getString(key, null);
//Do whatever with that value
}
}
然而,我突然意识到,这听起来像是在谈论动态添加偏好视图。这完全是另一回事=)。
编辑:以下是如何以编程方式从您的首选项活动中添加带有视图的首选项:
@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);
}
在这个例子中,我给PreferenceScreen一个“PREFSMAIN”的键。您可以通过这种方式添加任何类型的首选项。
答案 1 :(得分:0)