EditText setText不显示

时间:2013-06-16 15:47:31

标签: android

在我的onCreate()中,我有:

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

然后在我的onStop()中我有:

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

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

5 个答案:

答案 0 :(得分:1)

请勿使用==来比较字符串的内容。请改用equals()

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

Why should I use equals instead of ==

答案 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");
}