如何从 Firebase 获取 on object 或 Exception?
How to get an on object or an Exception from Firebase?
我有以下通用 class:
public class DataOrException<T, E extends Exception> {
public T data;
public E exception;
}
我从 Firebase 身份验证、FirebaseUser 对象或异常中获取:
MutableLiveData<DataOrException<FirebaseUser, Exception>> signIn(String email, String password) {
MutableLiveData<DataOrException<FirebaseUser, Exception>> liveData = new MutableLiveData<>();
auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
FirebaseUser firebaseUser = auth.getCurrentUser();
liveData.setValue(firebaseUser);
} else {
liveData.setValue(authTask.getException());
}
});
return liveData;
}
但我收到以下错误:
setValue(com.example.DataOrException<com.google.firebase.auth.FirebaseUser, java.lang.Exception>)
in MutableLiveData cannot be applied to (java.lang.Exception)
我应该将什么传递给 setValue() 以便它不再抱怨?
您的 MutableLiveData 需要一个 DataOrException<FirebaseUser, Exception>
类型的值,因此您需要构造一个并传递它。
DataOrException<FirebaseUser, Exception> value = new DataOrException<>()
if (task.isSuccessful()) {
value.data = auth.getCurrentUser();
} else {
value.exception = authTask.getException();
}
liveData.setValue(value);
我有以下通用 class:
public class DataOrException<T, E extends Exception> {
public T data;
public E exception;
}
我从 Firebase 身份验证、FirebaseUser 对象或异常中获取:
MutableLiveData<DataOrException<FirebaseUser, Exception>> signIn(String email, String password) {
MutableLiveData<DataOrException<FirebaseUser, Exception>> liveData = new MutableLiveData<>();
auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(task -> {
if (task.isSuccessful()) {
FirebaseUser firebaseUser = auth.getCurrentUser();
liveData.setValue(firebaseUser);
} else {
liveData.setValue(authTask.getException());
}
});
return liveData;
}
但我收到以下错误:
setValue(com.example.DataOrException<com.google.firebase.auth.FirebaseUser, java.lang.Exception>)
in MutableLiveData cannot be applied to (java.lang.Exception)
我应该将什么传递给 setValue() 以便它不再抱怨?
您的 MutableLiveData 需要一个 DataOrException<FirebaseUser, Exception>
类型的值,因此您需要构造一个并传递它。
DataOrException<FirebaseUser, Exception> value = new DataOrException<>()
if (task.isSuccessful()) {
value.data = auth.getCurrentUser();
} else {
value.exception = authTask.getException();
}
liveData.setValue(value);