好吧,我试图将一组三个电话号码保存到共享的首选项。当我点击保存时,它会遍历所有代码和吐司,然后结束弹出但是应该保存的数字不显示,而是显示我为每个数字输入的默认文本。有兴趣的难题。无论如何,在我正在使用的代码块中。
saveNums.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num1String;
num1String = num1.getText().toString();
SharedPreferences.Editor editor = prefs.edit();
editor.putString(constants.num1, num1String);
editor.commit();
String num2String;
num2String = num2.getText().toString();
SharedPreferences.Editor editor2 = prefs.edit();
editor2.putString(constants.num2, num2String);
editor2.commit();
String num3String;
num3String = num3.getText().toString();
SharedPreferences.Editor editor3 = prefs.edit();
editor3.putString(constants.num3, num3String);
editor3.commit();
Toast.makeText(c, "Contact's have been saved: " + "\n" + constants.num1 + "\n" + constants.num2 + "\n" + constants.num3, Toast.LENGTH_LONG)
.show();
}
});
这是共享的pref文件:
import android.content.SharedPreferences;
public class constants {
public static String PREF_NAME = "sharedString";
public static String num1 = "num1";
public static String num2 = "num2";
public static String num3 = "num3";
SharedPreferences prefs;
}
点击saveNums按钮时没有错误。所有相同的数字也没有被保存。关于如何解决这个问题的任何想法都会很棒。
答案 0 :(得分:1)
在我看来,您似乎没有理解一般SharedPreferences
和键/值对的概念。
SharedPreferences
可用于存储与自由选择键相关联的值。
示例:
String key = "key";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Context);
Editor e = prefs.edit();
e.putString(key, "stringtosave");
e.commit();
这意味着,值“stringtosave”现在存储在SharedPreferences
中,与键“key”相关联。检索值时,您需要再次提供密钥。
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(Context);
String retrieved = prefs.getString(key); // retrieved will then contain "stringtosave"
您在Toast
消息中正在执行的操作是显示与您保存的值相关联的键。这些键永远不会改变,显然总是具有相同的值。
如果要在Toast
消息中显示实际保存的值,则需要从SharedPreferences
检索它或使用刚刚存储的值(例如“num1String”)。
答案 1 :(得分:1)
在助手类中添加此代码
public static final String MY_ST_PREFS = "what ever you want";
public static void savePreferences(Context context, String key, String value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
MY_ST_PREFS, 0);
Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();
}
public static String getPreferences(Context context, String key) {
String prefsStr = "";
SharedPreferences sharedPreferences = context.getSharedPreferences(
MY_ST_PREFS, Context.MODE_PRIVATE);
prefsStr = sharedPreferences.getString(key, "");
return prefsStr;
}
在onButton
点击中,只需添加此内容即可在Shared Preferences
yourhelperclass.savePreferences(context,"yourkey",yourstringvalue);
获取Shared preferences
数据只需使用此代码
String myString = yourhelperclass.getPreferences(context,"yourkey");
我希望这会奏效......
答案 2 :(得分:0)
存储在共享首页
public synchronized void storeInPref(Context context, String key, String value) {
SharedPreferences preferences = context.getSharedPreferences(
PREFERENCE_NAME, Context.MODE_PRIVATE);
Editor prefEditor = preferences.edit();
prefEditor.putString(key, value);
prefEditor.commit();
}
从共享首页
中检索public synchronized String getFromPref(Context context, String key) {
SharedPreferences pref = context.getSharedPreferences(PREFERENCE_NAME,
Context.MODE_PRIVATE);
return pref.getString(key, null);
}