Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android空指针异常中的共享首选项_Android - Fatal编程技术网

android空指针异常中的共享首选项

android空指针异常中的共享首选项,android,Android,我通过意图从活动A移动到活动B。我将一些值存储在活动B的共享首选项中。在活动A oncreate()中,我获取共享首选项的值以与某些条件进行比较,但它会像预期的那样给我空指针异常(因为我不去活动B)。但是,如果值不为空,我想写一个条件,从共享首选项中获取数据。有人能告诉我如何实现这一点吗?以下是我的代码: In Activity B: SharedPreferences prefs = PreferenceManager.getDefaultSharedPr

我通过意图从活动A移动到活动B。我将一些值存储在活动B的共享首选项中。在活动A oncreate()中,我获取共享首选项的值以与某些条件进行比较,但它会像预期的那样给我空指针异常(因为我不去活动B)。但是,如果值不为空,我想写一个条件,从共享首选项中获取数据。有人能告诉我如何实现这一点吗?以下是我的代码:

   In Activity B: 
               SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MerchantLogin.this);
                SharedPreferences.Editor editor = prefs.edit();
                editor.putString("showdialog_login", "dontshow");
                editor.commit();
In Activity A:
            @Override
    protected void onCreate(Bundle savedInstanceState) 
    {

      SharedPreferences prefs =null;
 prefs = PreferenceManager.getDefaultSharedPreferences(LoginScreen.this);
SharedPreferences.Editor editor = prefs.edit();


if ((prefs.getString("showdialog_login", null).equalsIgnoreCase("dontshow")))
{

}
else if((prefs.getString("showdialog_login", null).equalsIgnoreCase("true")))
{

}
else if((prefs.getString("showdialog_login", null).equalsIgnoreCase("dummy")))
{

}
else
{
    editor.putString("showdialog_login", "false");
    editor.commit();
}

    }
但是,我在这一行得到错误:

if ((prefs.getString("showdialog_login", null).equalsIgnoreCase("dontshow"))).How can i execute this block of code.

使用
equals
进行比较时,应始终使用常量作为第一个参数,即

"dontshow".equalsIgnoreCase(prefs.getString("showdialog_login", null))
您将获得
NullPointerException
,因为尚未设置
showdialog\u login
属性,即

prefs.getString("showdialog_login", null)
返回
null
,因为这是您设置的默认值

实际上,你的情况就是这样

null.equalsIgnoreCase("dontshow")
-这自然会导致一个
空点异常

,而不是:

prefs.getString("showdialog_login", null)
使用:

因为,如果未设置“showdialog\u login”首选项的值,它将返回空值,您可能会得到NPE(空指针异常)。

在活动A中:

 static SharedPreferences prefs;
 @Override
    protected void onCreate(Bundle savedInstanceState) 
    {

      prefs = getSharedPreferences("showdialog_login",0);
      String ss= prefs.getString("showdialog_login", "default");
if ((ss.equalsIgnoreCase("dontshow")))
{

}
else if((ss.equalsIgnoreCase("true")))
{

}
else if((ss.equalsIgnoreCase("dummy")))
{

}
else
{
    editor.putString("showdialog_login", "false");
    editor.commit();
}

    }

谢谢佐尔坦,你帮我节省了很多时间。
 static SharedPreferences prefs;
 @Override
    protected void onCreate(Bundle savedInstanceState) 
    {

      prefs = getSharedPreferences("showdialog_login",0);
      String ss= prefs.getString("showdialog_login", "default");
if ((ss.equalsIgnoreCase("dontshow")))
{

}
else if((ss.equalsIgnoreCase("true")))
{

}
else if((ss.equalsIgnoreCase("dummy")))
{

}
else
{
    editor.putString("showdialog_login", "false");
    editor.commit();
}

    }