如何检查SharedPreferences字符串是否为空或null *android

13

我想在SharedPreferences中检查一个字符串,该字符串用于存储用户名和密码,如果用户名和密码不为空,则将其重定向到主页,否则,如果用户名和密码为空,则将其重定向到登录页面。

这是我检查SharedPreferences字符串的代码,但它无法正常工作...

if(PreferenceConnector.USERNAME!=null){
    Intent intent = new Intent(MainActivity.this,MainHome_Activity.class);
    startActivity(intent);
} else {
   Intent intent = new Intent(MainActivity.this,LoginFormPegawai_Activity.class);
   startActivity(intent);
}

我尝试使用这段代码通过 Toast 进行检查,尝试后,我得到了 SharedPreferences 字符串不为空的结果。

btn_logout_pegawai.setOnClickListener(new OnClickListener() {
     public void onClick(View v) {

      //remove the SharedPreferences string
      PreferenceConnector.getEditor(this).remove(PreferenceConnector.USERNAME)
            .commit();
      PreferenceConnector.getEditor(this).remove(PreferenceConnector.PASSWORD)
            .commit();  

//checking the SharedPreferences  string
         if(PreferenceConnector.USERNAME!=null){
            Toast.makeText(MainHome_Activity.this,"not null", Toast.LENGTH_SHORT).show();       
         }
         else {
           Toast.makeText(MainHome_Activity.this,"null", Toast.LENGTH_SHORT).show();
        }
    }
 });

我该如何正确地检查SharedPreferences字符串是否为空或为null?

谢谢。

5个回答

36

这样做:

SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String username = myPrefs.getString("USERNAME",null);
String password = myPrefs.getString("PASSWORD",null);
如果用户名和密码存在,它们将具有一个值,否则它们将为null。
if (username != null && password != null )
{
    //username and password are present, do your stuff
}

您不必单独检查它们的存在。尝试检索它们的值将自动返回null(如果不存在)或该值(如果存在)。


@AnupCowkur 你能看一下这个吗?http://stackoverflow.com/questions/36959279/how-do-i-use-a-dialogue-in-my-android-app-just-before-the-start-of-service - Abhishek
如果我的偏好是int类型,那我该怎么办呢? - Arpit Patel
6
现在 MODE_WORLD_READABLE 已经被弃用。在使用 SharedPreferences 时,请使用 MODE_PRIVATE - Ionut Ciuta
如果我想检查SharedPreference是否为空,然后注销到登录界面怎么办? - Dhruv Thakkar
使用 isEmpty() 方法 - Sanjeev Kumar

3
public static final String DEFAULT_VALUE = "default";
public static final String ANY_FIELD = "any_field";

SharedPreferences prefs = context.getPreferences(Activity.MODE_PRIVATE);
String text = prefs.getString(ANY_FIELD, DEFAULT_VALUE);
if (text.equals(DEFAULT_VALUE)) {
    //TODO:
} else {
    //TODO:
}

祝你好运!


2

试试这个

  if(PreferenceConnector.getString("USERNAME")!=null){   
      Intent intent = new 
      Intent(MainActivity.this,MainHome_Activity.class);
      startActivity(intent);
   }
   else 
   {
     Intent intent = new Intent(MainActivity.this,LoginFormPegawai_Activity.class);
     startActivity(intent);
   }

0

在我的情况下,我需要对默认值进行检查,所以我这样做了

var userNo = controller.prefs!.getInt('userNo') ?? 0;

if (userNo > 0) {
  //do some task
}

对我来说它运行良好


-1
 if(appSettings.contains(Constants.WEATHER_SUBN_POSTION)) {
        savedSubPostion = appSettings.getInt(Constants.WEATHER_SUBN_POSTION, 0);
 }

首先检查它是否包含该值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接