gpt4 book ai didi

java - 如何修复 Unboxing 可能会在 firebase 中产生 nullPointer Exception?

转载 作者:行者123 更新时间:2023-11-29 08:29:37 26 4
gpt4 key购买 nike

enter image description here无论我登录哪个用户,因为“points”变量总是返回 0。相同的代码适用于不同的 Activity ,我看不出有什么不同。当我将鼠标悬停在 datasnapshot 上时,它表示可能会产生空指针异常,但它也会在其他有效的 Activity 中说明这一点。我花了很长时间试图弄清楚这一点。谢谢。

        databaseUsers =FirebaseDatabase.getInstance().getReference("Users");
final FirebaseAuth firebaseAuth;
firebaseAuth = FirebaseAuth.getInstance();
user = firebaseAuth.getCurrentUser();
databaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
points = dataSnapshot.child(user.getUid()).child("points").getValue(int.class);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
//Getting Total Points from Firebase Database
databaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
totalpoints = dataSnapshot.child(user.getUid()).child("totalpoints").getValue(int.class);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

最佳答案

我假设这就是您所说的那行,并且 points是一些原始类型,例如 intlong :

points = dataSnapshot.child(user.getUid()).child("points").getValue(int.class);

这里的问题是 .getValue(Class<T>) 返回装箱类型,例如 Integer这可能是 null ,当数据点不存在时。如果您尝试将返回值分配给基本类型,则需要对值进行拆箱,并且拆箱一个 null。值导致空指针异常。

null的情况下进行保护值,你需要添加一个 null -检查:

Integer value = dataSnapshot.child(user.getUid()).child("points").getValue(int.class);
if (value != null) {
points = value;
} else {
// TODO
// points = ???
}

关于java - 如何修复 Unboxing 可能会在 firebase 中产生 nullPointer Exception?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com