android - 首次登录后,电子邮件注册用户 displayName 不显示在导航标题中(Firebase)
问题描述
当用户第一次在我的应用程序中登录时,他会进入“欢迎屏幕”,在其中输入用户名。单击按钮后,他进入 MainActivity,其中 NavigationDrawer 应该是他创建的用户名。问题是用户名仅在他注销并再次登录后才会显示。
displayName 也显示在另一个 Activity 中的另一个 TextView 中,并以正确的方式显示。在该活动中,我使用以下代码:
// This code works as expected
namePlayer1 = view.findViewById(R.id.name_player_1);
FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userName =user.getDisplayName();
namePlayer1.setText(userName);
因此,如果您将其与下面的代码进行比较,您会发现问题仅在使用 NavigationDrawer 时出现。
我知道这是 Firebase Android SDK v9.8.0 中的一个错误,但现在应该已经解决了吗?
这是我所指的问题: displayName 在使用 Firebase Auth 创建用户后显示为空
这是我的 MainActivity,它有一个导航抽屉:
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
// Displays the username in the nav_header
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userName = user.getDisplayName();
View header = navigationView.getHeaderView(0);
TextView text = header.findViewById(R.id.username);
text.setText(userName);
...
解决方案
很可能这只是一个赛车问题。您注册了用户,但在注册用户详细信息之前太快进入下一个活动。
试听注册:
currentUser.updateProfile(profileUpdates)
.addOnCompleteListener(new OnCompleteListener<Void>()
{
@Override
public void onComplete(@NonNull Task<Void> task)
{
if (task.isSuccessful())
{
//TODO: move to MainActivity
Log.d(TAG, "User profile updated.");
}
}
});
或者简单地将名称传递给 MainActivity 使用
Intent intent = new Intent(this, MainActivity.class)
intent.putExtra("username", username);
startActivity(intent)
推荐阅读
- excel - 同时输入到 2 个单元格
- c# - 使用 Linq 仅查找在标志列表中具有所有匹配值的记录?
- php - 如何使用 php mysql 运行循环,根据月份的总列值显示结果
- python - Python - 计算数据透视表中总计的百分比
- python - 如果反向关系不存在,为什么 Django 会停止执行?
- vue.js - vuejs - 如何防止组件响应全局事件
- pivot - 部分数据透视?
- node.js - 已安装节点,但命令行中的节点和 NPM 均不可用
- c# - 将类型的对象添加到适合泛型类型的对象的通用解决方案
- javascript - Date().getTime() JavaScript 转换为 php?