Итак, у меня есть простое приложение для андроида firebase, которое я собираюсь обслуживать для разных пользователей. Пользователь регистрируется и при создании их Uid хранится в пользовательской таблице вместе с записью UserInformation под их Uid со значениями «UserType» и «IsCurrentlyTracking». Пользователь подписывается, приводится в профиль, в котором они могут нажать кнопку, чтобы продолжить работу через приложение. Вот моя таблица: Android - Firebase; при входе в систему, извлечении данных (многоуровневых) и перенаправлении этого пользователя на основе этих данных
При нажатии продолжается данные UserInformation извлекаются. Исходя из этих данных, они перенаправляются на другую деятельность. Вместо того, чтобы выполнять вышеупомянутое, приложение останавливается/падает.
Вот код/метод, который перенаправляет пользователя:
public void userRedirect(){
firebaseAuth = FirebaseAuth.getInstance();
user = firebaseAuth.getCurrentUser();
final FirebaseDatabase database = FirebaseDatabase.getInstance();
Query q = database.getReference("Users/" + user.getUid() + "/UserInformation");
q.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
UserInformation uI = dataSnapshot.getValue(UserInformation.class);
int userType = uI.getUserType();
boolean ICT = uI.getTrackingStatus();
if ((userType == 1) && (!ICT)) {
finish();
startActivity(new Intent(ProfileActivity.this, AllocationActivity.class));
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
databaseError.getMessage();
}
});
}
я был в состоянии, прежде чем извлекать данные, хотя информация не хранится в таблице «Users» (только под UID пользователя) , и UserInformation не сходила с UiD.
Для некоторых дополнительных условиях, вот мой пользовательский класс:
public int UserType;
public boolean IsCurrentlyTracking;
public UserInformation(int userType, boolean IsCurrentlyTracking){
this.UserType = userType;
this.IsCurrentlyTracking = IsCurrentlyTracking;
}
public int getUserType()
{
return UserType;
}
public boolean getTrackingStatus()
{
return IsCurrentlyTracking;
}
Любые идеи о том, где я мог бы быть неправильно? Спасибо заранее.
Благодарим за ответ Faraz. Я буду реструктурировать и посмотреть, как я себя чувствую. Кроме того, спасибо за упрощение доступа в правилах базы данных. –