android - 如何在工具栏等 onDataChange 函数之外使用 Firebase 检索到的数据
问题描述
在这里,我添加了片段,我成功地从 firebase 检索数据并将其用作 onDataChange() 函数中的 textview ,但是当我尝试在此函数之外使用它时,它不起作用,而且我不想将 TOOLBAR 带入 onDataChange功能原因我还有其他需要使用数据的地方。
DatabaseReference databaseReference = firebaseDatabase.getReference(firebaseAuth.getUid());
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
UserProfile userProfile = dataSnapshot.getValue(UserProfile.class);
//profileName.setText(userProfile.getName());
pasteName = userProfile.getName();
pasteEmail = userProfile.getEmail();
testCase.setText(pasteName);//THIS IS WORKING
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(LoggedIn.this,"Problem Fetching Data",Toast.LENGTH_SHORT).show();
}
});
toolbar = (Toolbar)findViewById(R.id.toolbarMain);
toolbar.setTitle(pasteName);//NOT WORKING
解决方案
您遇到的问题是请求是异步的,因此pasteName = userProfile.getName();
在查询完成后执行,因此您有可用的信息。
工具栏 = (工具栏)findViewById(R.id.toolbarMain);
toolbar.setTitle(pasteName);//不工作
这是行不通的,因为它会在查询执行后立即执行,但它可能还没有完成。
推荐阅读
- git-lfs - GitAhead 大文件存储
- kubernetes - 如何在 Kubernetes 中为 statefulsets 资源设置适当的权限?
- json - 如何在 file_get_content 的结果中忽略 PHP 通知?
- reactjs - 等待 react-router history.goBack 完成
- php - 以编程方式在现有表中添加行和列,无需迁移 -laravel 刀片
- java - 如何将其转换为 Java lambda 格式?
- sql-server - 如何进行 SQL Server 递归 CTE
- r - R根据数据范围和变量组合填充数据值
- android - 有没有办法从android中的图像视图中获取图像路径?
- javascript - jsdoc - 参数对象内的默认属性值