如何在onDataChange函数(如工具栏等)中使用Firebase检索的数据

时间:2019-03-18 20:42:28

标签: android firebase firebase-realtime-database

在这里,我要添加片段,以便从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

1 个答案:

答案 0 :(得分:1)

您遇到的问题是请求是异步的,因此pasteName = userProfile.getName();在查询完成后执行,因此您可以获得可用的信息。

  

toolbar =(工具栏)findViewById(R.id.toolbarMain);

     

toolbar.setTitle(pasteName); //不工作

这行不通,因为该操作在执行查询后立即执行,但可能尚未完成。