Quelle modification est nécessaire pour que la fonction getVehicleName() renvoie correctement le nom du véhicule au thread parent? Quelle sera la meilleure approche? J'ai essayé les fonctions de gestionnaire et de rappel, mais je me suis retrouvé avec des erreurs de compilation ("essayer d'assigner des privilèges d'accès plus faibles").Android: Quelle est la bonne approche pour retourner les valeurs d'une classe anonyme à thread?
fonction parent (code complet non collé)
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
boolean val = checkifVehicleAvailable("1111A");
} catch (Exception e){
}
});
Fonctions
public boolean checkifVehicleAvailable(String drive_this) {
if(getVehicleName(drive_this).equals("1111A"){
return true;
}
return false;
}
// Need to be modified to return String
public String getVehicleName(String ID){
/*DB references*/
//final String vehicleName;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef;
DatabaseReference childRef;
myRef = database.getReference();
childRef = myRef.child("vehicles");
childRef.child(ID).addListenerForSingleValueEvent(new ValueEventListener() {
String vehicleSecretName;
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
vehicleName = dataSnapshot.child("vehicleName").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
S'il vous plaît, formatez votre code. Dans la première partie, vous utilisez 'try' sans' catch'. Vous écrivez 'getVehicleName (drive_this) .equals (" 1111A ")', mais getVehicleName est nul. – CoolMind
Édité. Je suis à la recherche de la bonne approche pour modifier getVehicleName() afin de renvoyer la valeur de chaîne de la base de données firebase. – Sandeep