我做了一个像这个教程的Android应用程序:
[ax.text
我可以在没有任何问题的情况下注册和登录,但在登录后,它会永远停留在屏幕上,并且#34;正在加载"并且它不会打开下一个我可以开始与其他用户聊天的活动。安卓监视器说:
致命的例外:主要 处理:com.example.georg.chatapp,PID:31740 java.lang.NullPointerException:尝试调用虚方法 ' java.lang.String com.quickblox.users.model.QBUser.getLogin()'在...上 null对象引用 在 com.example.georg.chatapp.ListUsersActivity $ 4.onSuccess(ListUsersActivity.java:160) 在 com.example.georg.chatapp.ListUsersActivity $ 4.onSuccess(ListUsersActivity.java:149)
以下是链接到的代码:
private void retrieveAllUsers() {
QBUsers.getUsers(null).performAsync(new QBEntityCallback<ArrayList<QBUser>>() {
@Override
public void onSuccess(ArrayList<QBUser> qbUsers, Bundle bundle) {
//add cache
QBUsersHolder.getInstance().putUsers(qbUsers);
ArrayList<QBUser> qbUserWithoutCurrent = new ArrayList<QBUser>();
for (QBUser user : qbUsers)
{
if (!user.getLogin().equals(QBChatService.getInstance().getUser().getLogin()))
qbUserWithoutCurrent.add(user);
}
ListUsersAdapter adapter = new ListUsersAdapter(getBaseContext(),qbUserWithoutCurrent);
lstUsers.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onError(QBResponseException e) {
Log.e("ERROR",e.getMessage());
}
});
}
用户登录:
private void createSessionForChat() {
final ProgressDialog mDialog = new ProgressDialog(ChatDialogsActivity.this);
mDialog.setMessage("Verbindung wird hergestellt");
mDialog.setCanceledOnTouchOutside(false);
mDialog.show();
String user,password;
user = getIntent().getStringExtra("user");
password = getIntent().getStringExtra("password");
final QBUser qbUser = new QBUser(user,password);
QBAuth.createSession(qbUser).performAsync(new QBEntityCallback<QBSession>() {
@Override
public void onSuccess(QBSession qbSession, Bundle bundle) {
qbUser.setId(qbSession.getUserId());
try {
qbUser.setPassword(BaseService.getBaseService().getToken());
} catch (BaseServiceException e) {
e.printStackTrace();
}
QBChatService.getInstance().login(qbUser, new QBEntityCallback() {
@Override
public void onSuccess(Object o, Bundle bundle) {
mDialog.dismiss();
}
@Override
public void onError(QBResponseException e) {
Log.e("ERROR",""+e.getMessage());
}
});
}
@Override
public void onError(QBResponseException e) {
}
});
}
我希望你知道如何解决它。我使用QuickBlox作为服务器。 当我按下&#34;返回&#34;按钮,当它使用浮动按钮加载下一个活动时会出现几秒钟,然后它会崩溃。
答案 0 :(得分:0)
这是因为没有用户登录聊天(可能是登录到REST而不是聊天)。在您的情况下,您需要在加载用户之前登录聊天,因为它使用QBChatService.getInstance().login(qbUser);
qbUser - 带有id,登录名和密码的QBUser。