我正在尝试访问用户名以显示在屏幕上,我正在从我的 Firebase 数据库中检索用户名。
获取用户名的代码有点长,
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userName = dataSnapshot.child("userName").getValue(String.class);
navUsername.setText(userName);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
因此,我试图让那段代码返回一个名为“specUserName”的字符串,这样我就可以轻松地从任何类访问它,而不必每次都放入那个冗长的代码字符串。在我的 User.class 中,我添加了这个
public String getUserName() {
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
specUserName = dataSnapshot.child("userName").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
});
return specUserName;
}
我试图通过这样做在我的 HomePage.class 中检索它
users.getUserName();
navUsername.setText(users.specUserName);
但是现在,每当我打开主页时,它都会崩溃,这是我在 Logcat 中收到的错误。
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.brent.fifty_fifty.User.getUserName()' on a null object reference
at com.example.brent.fifty_fifty.HomePage.onCreateOptionsMenu(HomePage.java:84)
HomePage:84 是我调用 getUserName() 方法的地方,但它一直返回 null 并崩溃。
有什么帮助吗?
宝慕林4294392
相关分类