Я пытаюсь получить доступ к имени пользователя для отображения на экране, и я получаю имя пользователя из моей базы данных 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);
Но теперь HomePage продолжает падать всякий раз, когдаЯ открываю его, и это ошибка, которую я получаю в своем 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 (), но он продолжает возвращать ноль и сбой.
Любая помощь?