我第一次使用共享首选项并收到错误。
我的代码是这样的:
public class MainActivity extends Activity {
static final String ONE = "";
static final String TWO = "";
private static SharedPreferences mSharedPreferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences.Editor edi = mSharedPreferences.edit();
edi.putString(ONE, "1");
edi.putString(TWO, "2");
edi.commit();
String one = mSharedPreferences.getString(ONE,"1");
String two = mSharedPreferences.getString(TWO,"2");
System.out.println("Your Numbers: "one+ " " + two);
}
}
预期产出:
Your Numbers: 1 2
控制台输出:
Your Numbers: 2 2
我无法弄清楚我做错了什么。分享您的观点。
答案 0 :(得分:3)
您需要在名称/键上添加一些字符串。目前两个键名都是空白,因此您的代码将覆盖相同的首选项值 。 如下更改静态字符串,它应该可以正常工作。
static final String ONE = "one";
static final String TWO = "two";
还尝试使用帮助程序类,使共享首选项更简单。这是我写的:Android-SharedPreferences-Helper
答案 1 :(得分:2)
因此:
static final String ONE = "";
static final String TWO = "";
将其更改为:
static final String ONE = "One";
static final String TWO = "Two";
U需要每个偏好的唯一值。 在你的情况下,ONE会被TWO覆盖。
额外信息
如果您查看Android文档here,您会看到putString
需要两个参数:
key : String: The name of the preference to modify.
value : String: The new value for the preference.
如果你看到getString
here,你会发现它还有两个参数,都与putString
相同:
key : String: The name of the preference to retrieve.
- 重要 defValue : String: Value to return if this preference does not exist.
名称/密钥是让get
部分了解获取值所需的首选项的部分。
希望这会让你的事情更加清晰!
答案 2 :(得分:1)
两个字符串都是空的
var t = '.......';
应该是这样的:
static final String ONE = "";
static final String TWO = "";