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