在我的onCreate()中,我有:
if(sharedPref.getString("name",null)==""){EditText.setText("Something");}
else{EditText.setText(sharedPref.getString("name",null));}
然后在我的onStop()中我有:
sharedPrefEditor.putString("name",EditText.getText().toString());
EditText仅在我第一次安装并运行它时显示提示。但是,它似乎在稍后启动时显示正确的文本。
答案 0 :(得分:1)
请勿使用==
来比较字符串的内容。请改用equals()
:
if(sharedPref.getString("name",null).equals("")){
EditText.setText("Something");
}
答案 1 :(得分:0)
首先,您没有正确使用共享首选项。您正在键入null作为第二个参数,如果未定义您键入的第一个参数,则将获得该值。这本身不是问题,但是在你的if句子中你将它与空字符串进行比较。
所以首先使用equals而不是==然后如果你想要接收一个空字符串,如果没有定义键,则输入一个空字符串作为SharedPreferences.gerString方法的第二个参数。
希望它有所帮助;)
答案 2 :(得分:0)
运算符==
不能用于比较Java中的字符串。
if(string1.equals(string2){
}
此外,您将值设置为SharedPreferences,但您永远不会提交更改。
sharedPrefEditor.commit();
<强> OnCreate中强>
String prefsVal = sharedPref.getString("name", null);
if(prefsVal.equals(null)){ //If default value was returned
EditText.setText("Something");
}else{
EditText.setText(prefsVal);
}
或强>
以下内容将您发布的代码转换为单行解决方案。传递给SharedPref的第二个参数是如果没有找到给定键的值,则返回的默认值。
EditText.setText(sharedPref.getString("name", "Something");
<强>调用OnStop 强>
sharedPrefEditor.putString("name", EditText.getText().toString());
sharedPrefEditoy.commit();
答案 3 :(得分:0)
如果未设置首选项,则使用"Something"
,则:
EditText.setText(sharedPref.getString("name","Something"));
如果未设置首选项, getString()
将自动返回"Something"
。无需额外的代码。
答案 4 :(得分:0)
String strName = sharedPref.getString("name","");
if(!strName.isEmpty()){
EditText.setText(strName);
}else{
EditText.setText("Something");
}