如何在 Android 中的 SharedPreferences 中给定键值获取值?
How to get values given the key value in a set in SharedPreferences in Android?
public void buttonClick(View v)
{
EditText sd = (EditText)findViewById(R.id.sd);
EditText desc = (EditText)findViewById(R.id.description);
Spinner type = (Spinner)findViewById(R.id.type);
Spinner priority = (Spinner)findViewById(R.id.priority);
Set<String> set = new HashSet();
if(!validate(sd))
sd.setError("This field cannot be empty");
else if(!validate(desc))
desc.setError("This field cannot be empty");
else
{
set.add(type.getSelectedItem().toString());
set.add(priority.getSelectedItem().toString());
set.add(desc.getText().toString());
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref",MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putStringSet(sd.getText().toString(),set);
editor.commit();
Log.d("MyTag",pref.getAll().toString());
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
}
private boolean validate(EditText t1)
{
if(t1.getText().length()==0)
return false;
else
return true;
}
在上面的代码中,我使用 StringSet 将详细信息存储在 SharedPreferences 中。键是 sd
字符串,值是 desc
、type
和 `priority'。我创建了一个 Set 并将键和相应的值放入集合中。如何获取给定键的值?
方法 pref.getStringSet(key, Set<String>)
需要键和值。键值已知,但第二个参数应该放什么?已尝试 null
但它需要一种 Set。
pref.getStringSet(key, Set<String>)
中的第二个参数是默认值,以防以前从未设置过首选项。
勾选 documentation:
参数
key
要检索的首选项的名称。
defValues
如果此首选项不存在,则值为 return。
因此,如果已经设置,则先前分配的值是 returned。否则 defValues
是 returned.
您可以继续将 null
放在那里。以下编译并适用于我:
HashSet<String> hashSet = hashSet = (HashSet<String>) sp.getStringSet("names", null);
第二个值是默认值。如果 Lint
在您输入 null
时给您一个错误,只需告诉 Lint
忽略该错误即可。
第二个参数是默认值,如果您尝试获取的共享首选项不存在,或者您将错误的名称作为第一个参数,它将被设置为作为第二个参数传递的默认值。
键值是一个标签,您将使用它来获取特定的共享首选项,例如:
editor.putString("name_of_your_preference", value_of_preference);
然后您可以使用以下方法检索该字符串:
pref.getString("name_of_your_preference", default_value);
您只能使用 NULL 作为默认值
public void buttonClick(View v)
{
EditText sd = (EditText)findViewById(R.id.sd);
EditText desc = (EditText)findViewById(R.id.description);
Spinner type = (Spinner)findViewById(R.id.type);
Spinner priority = (Spinner)findViewById(R.id.priority);
Set<String> set = new HashSet();
if(!validate(sd))
sd.setError("This field cannot be empty");
else if(!validate(desc))
desc.setError("This field cannot be empty");
else
{
set.add(type.getSelectedItem().toString());
set.add(priority.getSelectedItem().toString());
set.add(desc.getText().toString());
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref",MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putStringSet(sd.getText().toString(),set);
editor.commit();
Log.d("MyTag",pref.getAll().toString());
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
}
private boolean validate(EditText t1)
{
if(t1.getText().length()==0)
return false;
else
return true;
}
在上面的代码中,我使用 StringSet 将详细信息存储在 SharedPreferences 中。键是 sd
字符串,值是 desc
、type
和 `priority'。我创建了一个 Set 并将键和相应的值放入集合中。如何获取给定键的值?
方法 pref.getStringSet(key, Set<String>)
需要键和值。键值已知,但第二个参数应该放什么?已尝试 null
但它需要一种 Set。
pref.getStringSet(key, Set<String>)
中的第二个参数是默认值,以防以前从未设置过首选项。
勾选 documentation:
参数
key
要检索的首选项的名称。defValues
如果此首选项不存在,则值为 return。
因此,如果已经设置,则先前分配的值是 returned。否则 defValues
是 returned.
您可以继续将 null
放在那里。以下编译并适用于我:
HashSet<String> hashSet = hashSet = (HashSet<String>) sp.getStringSet("names", null);
第二个值是默认值。如果 Lint
在您输入 null
时给您一个错误,只需告诉 Lint
忽略该错误即可。
第二个参数是默认值,如果您尝试获取的共享首选项不存在,或者您将错误的名称作为第一个参数,它将被设置为作为第二个参数传递的默认值。
键值是一个标签,您将使用它来获取特定的共享首选项,例如:
editor.putString("name_of_your_preference", value_of_preference);
然后您可以使用以下方法检索该字符串:
pref.getString("name_of_your_preference", default_value);
您只能使用 NULL 作为默认值