我正在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获取了共享偏好值
任何人都可以建议我如何提供这种条件
答案 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是否为空。
希望它可以帮助你:)