在这里,我要添加片段,以便从Firebase成功检索数据并像在onDataChange()函数中的textview中一样使用它,但是当我尝试在此函数之外使用它时,它将无法正常工作,而且我也不想带onDataChange函数中的TOOLBAR导致我在其他地方也需要使用数据。
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
答案 0 :(得分:1)
您遇到的问题是请求是异步的,因此pasteName = userProfile.getName();
在查询完成后执行,因此您可以获得可用的信息。
toolbar =(工具栏)findViewById(R.id.toolbarMain);
toolbar.setTitle(pasteName); //不工作
这行不通,因为该操作在执行查询后立即执行,但可能尚未完成。