如何在android中有效的sharedpreference值?

时间:2017-08-23 08:19:37

标签: android sharedpreferences

我正在splashscreen活动

检查所有这些内容

所以我给这个,

SharedPreferences spf = getSharedPreferences("myprfs", Context.MODE_PRIVATE);
SharedPreferences.Editor spe = spf.edit();
String name = spf.getString("name","");
String id = spf.getString("id","");
String class = spf.getString("class","");
String roll = spf.getString("roll","");
spe.commit();

 if((spe != null) && (name != null) && (id != null) && (class != null) && (roll != null)){
     Intent i = new Intent(Startpage.this,Welcome.class);
     startActivity(i);
     Startpage.this.finish();

 }
 else{
     Intent i = new Intent(Startpage.this,MainActivity.class);
     startActivity(i);
     Startpage.this.finish();
 }

当我打开app启动页面时,直接转到欢迎页面,

但是,如果在共享偏好设置中没有保存值,我想将splashscreen页面移至MainActivity

我跟着this获取了共享偏好值

任何人都可以建议我如何提供这种条件

4 个答案:

答案 0 :(得分:2)

spf.getString("name","");

以空字符串作为默认值返回。

点子:

为什么不使用

spf.contains("name")

返回true还是false? 或者,您可以使用TextUtils.isEmpty()检查字符串是空还是null 方法

答案 1 :(得分:1)

String name = spf.getString("name",null);

如果已经存在默认值作为第二个参数,则此方法创建共享pref。因此,在您的情况下,当用户第一次访问应用程序时,共享pref将以空字符串保存为值。

只需将您的默认值更改为null,因为您的检查是空值并且它将起作用 -

{{1}}

答案 2 :(得分:0)

您将null check放在字符串上,但在从共享首选项中读取时,如果在共享首选项中找不到该值,则将它们设置为empty string。在if条件下将支票更改为String.isEmpty()

答案 3 :(得分:0)

因为null""不同,

您应该使用android.text.TextUtils.isEmpty(CharSequence str)代替str != null

另一种方式是: String name = spf.getString("name",null);,然后像if (Str != null)

对我来说,我总是用第一种方式来判断String是否为空。

希望它可以帮助你:)