繁体   English   中英

如何将 firebase 数据库的 eventlistner 的数据快照存储在字符串中

[英]how can I store the data snapshot of a eventlistner of firebase database in a string

我正在尝试将子节点的值存储在我的 firebase 项目的字符串中。 但是当我从 scope 中取出 go 时,数据不再存储。 请帮助我.. 我正在附加代码片段,我想将位置字符串存储到 eventlistener 之外的另一个字符串中。

private RecyclerView findFriendList;
private EditText searchET;
private String str = "";
private DatabaseReference usersRef;
private DatabaseReference userlocationRef;
private String address ="" ;
private  String locationDb ="";
private TextView getlocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_find_electrician);

    getlocation =findViewById(R.id.get_location_electrician);


    userlocationRef = FirebaseDatabase.getInstance().getReference("Users");

    userlocationRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot)
                {
                    if(dataSnapshot.exists())
                    {
                        String location = dataSnapshot.child("location").getValue().toString();
                        locationDb = location;
                        address =locationDb;
                        getlocation.setText(address);
                        Toast.makeText(FindElectricianActivity.this, address, Toast.LENGTH_SHORT).show();

                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });



   // Toast.makeText(this, address, Toast.LENGTH_SHORT).show();
    address = getlocation.getText().toString();

    usersRef = FirebaseDatabase.getInstance().getReference().child("Location").child(address).child("ServiceProvider").child("Electrician");

    FirebaseRecyclerOptions<Contacts> options = null;

    searchET = findViewById(R.id.search_user_text_electrician);
    findFriendList = findViewById(R.id.find_friends_list_electrician);
    findFriendList.setLayoutManager(new LinearLayoutManager(getApplicationContext()));


    searchET.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charseq, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence charseq, int start, int before, int count) {
            if (searchET.getText().toString().equals("")) {
                Toast.makeText(FindElectricianActivity.this, "please write name to search", Toast.LENGTH_SHORT).show();

            } else {
                str = charseq.toString();
                onStart();
            }


        }


        @Override
        public void afterTextChanged(Editable charseq) {

        }
    });

}

在这里,我想将位置字符串存储到地址字符串中。 只要我在 addValuEventListner 中存在,它就会存储。 但在外面它变成了 null。 我添加了 Toast 消息来验证它。 所以请帮帮我

Firebase API 是异步的,并在任何数据可用之前立即返回。 在调用回调之前,不会分配 class 成员中的数据。 在此之前,它们将只是 null。 在调用回调之前,您有责任仅访问这些成员变量。 这意味着您可能应该只在回调或它们调用的其他方法中执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM