【发布时间】:2019-09-06 14:22:44
【问题描述】:
我有一个活动,我通过 Firebase 身份验证获取用户的 uid:
public class MainActivity extends DaggerAppCompatActivity {
@Inject UserViewModel userViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
userViewModel.setUid(uid);
}
}
我在我的视图模型类中使用了这个uid:
public class UserViewModel extends ViewModel {
private CollectionReference usersRef;
@Inject
UsersViewModel(CollectionReference usersRef) {
this.usersRef = usersRef;
}
void setUid(String uid) {
DocumentReference uidRef = usersRef.document(uid);
//Use uidRef
}
}
这是我的应用模块类:
class AppModule {
@Singleton
@Provides
static FirebaseFirestore provideFirebaseFirestoreInstance() {
return FirebaseFirestore.getInstance();
}
@Singleton
@Provides
static CollectionReference provideUsersCollectionRef(FirebaseFirestore db) {
return db.collection("users");
}
@Singleton
@Provides
static DocumentReference provideUidDocumentRef(CollectionReference usersRef) {
return usersRef.document(uid); //How to add the uid here
}
}
问题是,如何在应用模块类中添加uid,这样我就可以像这样直接在我的视图模型类中注入 DocumentReference:
public class UserViewModel extends ViewModel {
private DocumentReference uidRef;
@Inject
UserViewModel(DocumentReference uidRef) {
this.uidRef= uidRef;
//Use uidRef
}
}
【问题讨论】:
标签: android dependency-injection google-cloud-firestore dagger-2 dagger