3 回答
TA贡献1859条经验 获得超6个赞
步骤 1.获取当前登录用户:-
获取当前用户的推荐方法是调用 getCurrentUser 方法。如果没有用户登录,getCurrentUser 将返回 null。示例 :-
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// Name, email address, and profile photo Url
String name = user.getDisplayName();
String email = user.getEmail();
Uri photoUrl = user.getPhotoUrl();
// Check if user's email is verified
boolean emailVerified = user.isEmailVerified();
// The user's ID, unique to the Firebase project. Do NOT use this value to
// authenticate with your backend server, if you have one. Use
// FirebaseUser.getIdToken() instead.
String uid = user.getUid();
}
有关详细信息,请查看链接
在 Firebase 中管理用户
步骤2.将其设置为导航视图标题:-你可以得到文本视图,如:-
NavigationView navigationView = (NavigationView) findViewById(R.id.your_nav_view_id);
View header = navigationView.getHeaderView(0)
TextView text = (TextView) header.findViewById(R.id.textView);
TA贡献1804条经验 获得超3个赞
从导航标题中的 firebase 实时数据库中检索记录的用户数据
xml 文件
<TextView
android:id="@+id/your_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gotham_bold"
android:text="User Name"
android:textColor="@color/brown"
android:textSize="18sp"
/>
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gotham_book"
android:text="User Name"
android:textColor="@color/brown"
android:textSize="15sp"
android:layout_gravity="center"
/>
java 代码
firebaseDatabase.getReference().child("Users").child(auth.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
User user = snapshot.getValue(User.class);
View header = navigationView.getHeaderView(0);
name = header.findViewById(R.id.your_name);
username = header.findViewById(R.id.user_name);
name.setText(user.getName1());
username.setText("@" + user.getUsername1());
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
TA贡献1843条经验 获得超7个赞
如果您想检索存储在实时数据库中的已登录用户电子邮件,用户名和图片,并在导航标题中显示它们,那么您可以简单地按照以下操作:
NavigationView navigationView = findViewById(R.id.nav_view);
database = FirebaseDatabase.getInstance();
auth = FirebaseAuth.getInstance();
database.getReference().child("Users").child(auth.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
//we have Users class which contain user properties and methods.
User user = snapshot.getValue(User.class);
View header = navigationView.getHeaderView(0);
nav_email = header.findViewById(R.id.nav_email);
nav_username = header.findViewById(R.id.nav_username);
nav_profile = header.findViewById(R.id.nav_profilePic);
Picasso.get().load(user.getProfilePic()).placeholder(R.drawable.avatar).into(nav_profile);
nav_email.setText(user.getMail());
nav_username.setText(user.getUserName());
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
如果要使用 Picasso 从实时数据库中检索图像,然后在导航标头图像视图上设置它,则在捆绑包 Gradle 模块文件中添加以下依赖项:
implementation 'com.squareup.picasso:picasso:2.71828'
然后,您可以在项目中使用毕加索。
添加回答
举报