Вызов Actvity из класса - PullRequest
       24

Вызов Actvity из класса

0 голосов
/ 26 января 2020

Мне нужно вызвать действие изнутри отдельного класса, который содержит метод 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 со многими другими классами без успеха.

1 Ответ

0 голосов
/ 26 января 2020

Измените этот метод

public static void setUserData(FirebaseAuth mAuth) {

на

public static void setUserData(Context context, FirebaseAuth mAuth) {

, затем вызовите его из класса Activity следующим образом:

setUserData(this, mAuth);

, чтобы вы могли использовать контекст действия внутри вашего класса myUser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...