java - 如何在代码中的确切位置将数据从 firebase 提取到 android studio 中?

标签 java android firebase firebase-realtime-database

有什么方法可以从代码所在的 firebase 中提取数据吗?我目前有 valueEventListeners,但它们都在它们下面的代码之后运行,从而使以下代码无效。我希望能够准确地在代码所在的位置提取一个值,而不是稍后。

到目前为止,我还没有在网上找到任何与此相关的信息。

我在代码中遇到的问题的一个很好的例子:

public void onItemClick(AdapterView<?> l, View v, final int position, long id) {

        FirebaseAuth mAuth = FirebaseAuth.getInstance();
        FirebaseUser user = mAuth.getCurrentUser();
        final String uid = user.getUid();

        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                cCESnapshot = dataSnapshot.child(uid).child("currChallenges").child(challengeList.get(position));
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

        Intent intent = new Intent();
        intent.setClass(this, ChallengeView.class);
        intent.putExtra("snapshot", cCESnapshot.toString());
        intent.putExtra("name", challengeList.get(position));
        startActivity(intent);
    }

cCESnapshot 为 null,因为 Intent 在 valueEventListener 之前运行。

最佳答案

onDataChange() 是异步的,因此使用检索到的数据的唯一方法是在 onDataChange() 内部,例如:

databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            cCESnapshot = dataSnapshot.child(uid).child("currChallenges").child(challengeList.get(position));

    Intent intent = new Intent();
    intent.setClass(this, ChallengeView.class);
    intent.putExtra("snapshot", cCESnapshot.toString());
    intent.putExtra("name", challengeList.get(position));
    startActivity(intent);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

关于java - 如何在代码中的确切位置将数据从 firebase 提取到 android studio 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55601562/

相关文章:

java - 如何将不断变化的 JTextArea 放到 JScrollPane 中?

java - 看不懂Java普通类库的用法

java - 循环遍历 2D 数组时 Android 构建崩溃 - libGDX

android - 加载多个纹理后内存不足

android - 检查文档是否包含2个字符串

java通过objecs字符串参数对具有对象值的哈希表进行排序

java - Selenium - 为什么加载的 cookie 不能完全工作?

android - Android Studio 会破坏我的项目文件吗?

javascript - Firebase URL 缩短器与 jQuery Ajax Post?

ios - 使用 Firebase 创建注册函数时 Swift 3 出错