Почему объект FirebaseAuth не передаётся через intent?
В моём приложении есть 2 Activity: MainActivity и AppActivity.
На MainActivity у меня происходит авторизация FirebaseAuth для FirebaseUser. А на AppActivity я хотел бы реализовать FirebaseAuth.signout(). Для этого я хочу передать FirebaseUser и FirebaseAuth из MainActivity в AppActivity:
public void moveToAppActivity(FirebaseUser user, FirebaseAuth auth) {
Intent intent = new Intent(MainActivity.this, AppActivity.class);
intent.putExtra("user", user);
intent.putExtra("auth", auth);
startActivity(intent);
}
Подскажите, пожалуйста, почему объект FirebaseUser прекрасно передаётся в AppActivity, а строка:
intent.putExtra("auth", auth);
Где auth это объект FirebaseAuth уже в IDE подсвечивает ошибку:
Cannot resolve method 'putExtra(java.lang.String, com.google.firebase.auth.FirebaseAuth)'
Ответы (2 шт):
В Андроиде все данные между разными активити передаются в специальном контейнере Parcel. В этот контейнер можно складывать только определнные типы данных. Один из таких типов — Parcelable.
В вашем конкретном случае FirebaseUser имплементирует интерфейс Parcelable, а FirebaseAuth — нет, поэтому передать его в extras нельзя.
Как оказалось, если авторизация происходит на 1м Activity, то на 2й Activity не нужно передавать ни FirebaseAuth, ни FirebaseUser, так как из 2го Activity к ним можно легко получить доступ как:
FirebaseAuth.getInstance().signout();
FirebaseAuth.getInstance().getCurrentUser().getEmail();
Как оказалось всё очень просто.