0

Я использую Firebase и на экране входа у меня есть метод, который он вызывается, когда пользователь вводит правильные учетные данные (этот метод запускает поток Firebase, чтобы получить все Информация мне нужно для главного экрана), и когда главный экран открыл мне нужно ждать, пока этот метод отделки, мне нужен какой-то флаг или что-то, позвольте мне вставить вам мой код:Нужно состояние потока Firebase

Login.java:

mProgress.setMessage("Verificando Datos Usuario..."); 
        mProgress.show(); 
        mAuth.signInWithEmailAndPassword(usuario, pass) 
          .addOnCompleteListener(Login.this, new OnCompleteListener<AuthResult>() { 
           @Override 
           public void onComplete(@NonNull Task<AuthResult> task) { 

            if (!task.isSuccessful()) { 

             Toast.makeText(Login.this, "Los Datos administrados no son correctos", 
               Toast.LENGTH_SHORT).show(); 
             mProgress.dismiss(); 
            } else{ 
             Toast.makeText(Login.this, "Bienvenido... ", 
               Toast.LENGTH_SHORT).show(); 
             AdminFirebase.loadAdmin(task.getResult().getUser()); 

             mProgress.dismiss(); 
             Intent intento=new Intent(Login.this, Principal.class); 
             startActivity(intento); 
            } 
           } 
          }); 

AdminFirebase.java:

public static void loadAdmin(FirebaseUser user){ 

     DatabaseReference userRef=adminRef.child(user.getUid()); 
     userRef.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       Administrador administrador=dataSnapshot.getValue(Administrador.class); 
       Sesion.admin=administrador; 
       Sesion.admin.loadTaxis(); 
      } 
      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 

    }); 

метод, который я должен ждать до конца, чтобы запустить подмигнули на классе Taxifirebase.java:

public static void loadTaxis(List<String> chapas){ 

      for (String chapa :chapas) { 
       DatabaseReference taxiref=childRef.child(chapa); 
       taxiref.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 

         Taxi taxi=dataSnapshot.getValue(Taxi.class); 
         Sesion.taxis.add(taxi); 

        } 

} 

Спасибо заранее.

ответ

0

Если для флага вы можете использовать класс Log.

Если вам нужно, чтобы логика программы использовала логическое значение и изменилась на true, когда вам нужно. Позже вы можете проверить значение.

+0

Мне нужно это для логики, мне нужно, чтобы поток был закончен, чтобы иметь данные в основном классе, и если я использую простое логическое значение, он не может присоединиться к потоку. –

+0

Тогда булев, вам не нужно булево внутри потока, вы должны прочитать о модификаторах доступа Java + знания о классе и POO, вы можете создать флаги, доступные в вашей программе или приложении – josedlujan

Смежные вопросы