Мне нужно вызвать действие изнутри отдельного класса, который содержит метод onDataChange
из Firebase.
Итак, я могу вызывать действие после того, как Firebase доставит нужные мне данные. Я просто не могу вставить методы startActivity
или getBaseContext
из Intent
из моего класса.
Мой класс myUser:
public class myUser{
private static ArrayList<String> userData;
public static ArrayList<String> getUserData() {
return userData;
}
...
}
Мой код (ВНУТРИ myUser):
public static void setUserData(FirebaseAuth mAuth) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
userData = new ArrayList<>();
String uID;
uID = mAuth.getCurrentUser().getUid();
DatabaseReference userRef = database.getReference("users/" + uID);
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String cpf, email, name, tel;
Boolean depend;
int uType;
cpf = dataSnapshot.child("cpf").getValue(String.class);
email = dataSnapshot.child("email").getValue(String.class);
name = dataSnapshot.child("name").getValue(String.class);
tel = dataSnapshot.child("tel").getValue(String.class);
depend = dataSnapshot.child("depend").getValue(Boolean.class);
uType = dataSnapshot.child("uType").getValue(Integer.class);
userData.add(name);
userData.add(email);
userData.add(cpf);
userData.add(tel);
userData.add(depend.toString());
userData.add(String.valueOf(uType));
//HERE IS WHERE I NEED TO CALL THE ACTIVITY, AFTER GET ALL DATA
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Неважно, как я вызываю или создаю экземпляр моего класса myUser
. Код работает, но возвращает ошибку, потому что onDataChange
(внутри класса myUser
) запускается после открытия действия. Итак, ArrayList возвращает значение null или пусто.
Вот почему мне нужно вызывать свою активность изнутри метода setUserData
моего класса myUser
Я пытался расширить свой класс myUser
со многими другими классами без успеха.