Android:ParseUser.getCurrentUser()甚至在Logout之后返回空对象

时间:2014-08-15 18:10:00

标签: java android login parse-platform

在我的Android代码中,我正在检查解析当前用户的条件。如果用户登录了某些操作正在执行,如果没有其他操作正在执行。但是当我在用户注销后检查条件时,ParseUser.getCurrentUser()返回对象,当我尝试通过parseCurrentUserObject访问数据时,应用程序崩溃,获得NullpointerException或IllegalStateException。

我也浏览了Parse for Android : ParseUser.logOut() doesn't log user out链接 但是不要为我锻炼。

代码是 -

`

ParseUser.logOut();
    if (ParseUser.getCurrentUser() != null) {
          Log.d("userType: ", ParseUser.getCurrentUser().getString("userType")
                            .toString());
          tabSettingForPrivateUser(rootView);
    } else {
          tabSettingForPublicUser(rootView);
    }

`

应用程序崩溃在日志消息,我试图从对象访问数据:

Log.d("userType: ", ParseUser.getCurrentUser().getString("userType").toString());

此行的LogCat错误消息 -

08-15 17:58:05.250: E/AndroidRuntime(1220): Caused by: java.lang.NullPointerException

如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

文档非常明确地说:

public static void logOut()

  

注销当前登录的用户   会话。这将从磁盘中删除会话,注销链接   服务以及将来对ParseUser.getCurrentUser()的调用将返回   空值。

如果对ParseUser.getCurrentUser()的方法调用行为不符合预期,则这是API中的错误。

您是否尝试过使用调试器并设置断点,以便在应用崩溃时查看哪些变量为空?你确定你得到的String是空的吗?

此外,您正在使用密钥访问ParseObject中的值。将密钥集中在interface中绝对是一个好主意。使调试更容易,代码更易于维护。为密钥编写原始字符串值绝对是一种灾难。