我故意从活动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/

10-11 20:25