Я думаю, что ваше замешательство заключается в множественном наследовании, в котором это плохой практике, и в Java это тоже невозможно. Тем не менее, реализация нескольких интерфейсов разрешена на Java, и это также безопасно.
Да, это нормальное поведение фоновой обработки, так как функции базы данных Firebase выполняются в отдельном потоке, тогда вам нужно сделать следующее:
Создать interface
для слушатель метода getString()
:
public interface OnValueReadyListener {
void onValueReady(String name, String surName);
}
Передать экземпляр интерфейса методу nameOfMember
:
public void nameOfMember(OnValueReadyListener listener) {
...
}
onSuccess
вызовите слушателя:
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists()) {
String name = documentSnapshot.getString(ARG_Firebase_User_Name);
String surname = documentSnapshot.getString(ARG_Firebase_User_SurName);
listener.onValueReady(name, surname);
Log.d(TAG, "onSuccess: " + name + " " + surname);
} else {
Log.d(TAG, "onSuccess: but not exist");
}
}
Вызовите метод nameOfMember
из onCreate
следующим образом:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firebaseHandler = FirebaseHandler.getInstance();
firebaseHandler.nameOfMember(new OnValueReadyListener() {
public void onValueReady(String name, String surName) {
// Do what you need here. you have the values ready
}
});
}
[1113 ]