1

在我的 onCreate() 我有:

if(sharedPref.getString("name",null)==""){EditText.setText("Something");}
else{EditText.setText(sharedPref.getString("name",null));}

然后在我的 onStop() 我有:

sharedPrefEditor.putString("name",EditText.getText().toString());

EditText 仅在我第一次安装和运行时显示提示。但是,稍后启动时,它似乎确实显示了正确的文本。

4

5 回答 5

1

不要==用于比较字符串的内容。改用equals()

if(sharedPref.getString("name",null).equals("")){
          EditText.setText("Something");
}

为什么我应该使用 equals 而不是 ==

于 2013-06-16T15:48:29.047 回答
0

如果"Something"未设置首选项,则使用 if,则:

  EditText.setText(sharedPref.getString("name","Something"));

getString()"Something"如果未设置首选项,将自动返回。不需要额外的代码。

于 2013-06-16T16:33:32.653 回答
0
String strName = sharedPref.getString("name","");

if(!strName.isEmpty()){
          EditText.setText(strName);
}else{
          EditText.setText("Something");
}
于 2013-06-16T16:34:52.587 回答
0

首先,您没有正确使用共享首选项。您正在键入 null 作为第二个参数,如果未定义您作为第一个参数键入的键,您将获得该值。这本身不是问题,但是在您的 if 句子中,您将其与空字符串进行比较。

所以首先使用equals而不是==然后如果你想接收一个空字符串,如果键没有定义,输入一个空字符串作为SharedPreferences.gerString方法的第二个参数。

希望能帮助到你 ;)

于 2013-06-16T16:24:51.370 回答
0

运算符==不能用于比较 Java 中的字符串。

if(string1.equals(string2){
}

此外,您为 SharedPreferences 设置了一个值,但您从不提交更改。

sharedPrefEditor.commit();

创建时

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");

停车

sharedPrefEditor.putString("name", EditText.getText().toString());
sharedPrefEditoy.commit();
于 2013-06-16T16:31:23.837 回答