首页 > 解决方案 > 如何在工具栏等 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

标签: androidfirebasefirebase-realtime-database

解决方案


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

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

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

这是行不通的,因为它会在查询执行后立即执行,但它可能还没有完成。


推荐阅读