我故意从活动A移到活动B.我将一些值存储在活动B的共享首选项中。在活动A中,我正在获取共享首选项的值以与某些条件进行比较,但是它给了我空指针异常符合预期(因为我不参加活动B)。但是,如果值不为null,我想编写一个条件以从共享首选项中获取数据。请问有人可以说我如何实现这一目标?以下是我的代码:
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_login
属性尚未设置,即prefs.getString("showdialog_login", null)
返回
null
,因为这就是您设置的默认值。有效地,您的状况因此
null.equalsIgnoreCase("dontshow")
-最终以
NullPointerException
结尾。关于android - Android空指针异常中的共享首选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17190547/