Bom dia.
Fiquei perdido com esta situação, há o método getUser(), mas na classe HomeActivity.java diz que não há esta referência:
Mas account é do tipo Parcelable e não GoogleSignAccount. Qual a relação entre essas 2 classes?
Sim, account é um Parcelable e this.user é do tipo GoogleSigninAccount, então quero atribuir um objeto GoogleSignAccount ao this.user do HomeActivity.java retornado pelo getUser() do Parcelable.
Tentei algumas alterações mostradas no vídeo do Thiengo, mas não ficou claro ainda:
package com.example.provados9;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.android.gms.auth.api.signin.GoogleSignIn;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.firebase.auth.FirebaseUser;
public class GoogleSigninParcelable implements Parcelable {
private GoogleSignInAccount user;
public GoogleSigninParcelable(GoogleSignInAccount user) {
this.user = user;
}
public GoogleSigninParcelable(Parcel parcel) {
this.user = (GoogleSignInAccount) parcel.readValue(GoogleSignInAccount.class.getClassLoader());
}
// protected GoogleSigninParcelable(Parcel in) {
// }
public void setUser(GoogleSignInAccount user) {
this.user = user;
}
public static final Creator<GoogleSigninParcelable> CREATOR = new Creator<GoogleSigninParcelable>() {
@Override
public GoogleSigninParcelable createFromParcel(Parcel in) {
return new GoogleSigninParcelable(in);
}
@Override
public GoogleSigninParcelable[] newArray(int size) {
return new GoogleSigninParcelable[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeValue(user);
}
}
Essa interface Parcelable fornece qual método?
Vi aqui na documentação do android, e realmente essa interface não possui o método getUser(). Talvez há algum erro na modelagem dessas classes.
Eu implementei este método, pois em outras classes e interfaces, há esta possibilidade de adicionar quanto métodos forem necessários, mas nesta, parece não haver este recurso. Pelo que percebi, há um método estático herdada da classe mãe, o CREATOR e, parece ser por ele que teremos o retorno das propriedades de classe, no caso preciso da propriedade user, instância de GoogleSiginAccount, mas não mostra métodos de retorno quando recupero na outra Activity, apenas alguns os mesmos métodos de definição de transporte, antes de poder recuperar os dados na Activity destino.
Vc consegue depurar a linha onde está pegando o Parcelable e ver qual a instância que está sendo retornado? Na sua IDE, vc conseguirá ver qual o tipo da instância que está sendo “guardada” pela interface Parcelable (a variável account).
Eu já depurei, mas o problema é algo que ainda não está claro para mim sobre o Parcelable. Farei mais alguns testes.