关于使用android studio在firebase实时数据库中的Uid下创建随机密钥

Shehara_r

我正在使用 android studio 和 firebase 实时数据库创建一个简单的应用程序。当用户注册他的数据时,它会保存在 firebase 提供的 Uid 下。然后我在 Uid 中创建了另一个名为“PATH”的节点,我想在其中存储用户提供的一些数据。为此,我想创建特定的 id 或其他内容,以便每次用户输入新数据时都不会被替换。(检查截图)

这就是我想要做的

我试图通过使用 Datasnapshot 来做到这一点,但它没有响应点击。这是我试过的。

add_new.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if( !Validate_text() ){
                    return;
                }
                else{
                    //Toast.makeText(getApplicationContext(), picker.getDayOfMonth() + "-" + picker.getMonth() + "-" + picker.getYear(), Toast.LENGTH_SHORT).show();
                // redirect to path

                    String ach = milestone.getEditText().getText().toString().trim();
                    int day = picker.getDayOfMonth();
                    int month = picker.getMonth();
                    int year = picker.getYear();
                    String date = day + "/" + month + "/" + year ;

                    reference.child(uid).child("PATH").addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            for( DataSnapshot random_key : snapshot.getChildren()) {

                                String key = random_key.getKey();
                                Map<String, Object> updates = new HashMap<String, Object>();
                                updates.put("Achievement : ", ach);
                                updates.put("Date", date);
                                reference.child(uid).child("PATH").child(key).updateChildren(updates).addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void unused) {
                                        Toast.makeText(getApplicationContext(), "Your achievement has been updated.", Toast.LENGTH_LONG).show();
                                        finish();
                                        startActivity(new Intent(AddPath.this, Path.class));
                                    }
                                });
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {
                            Log.v(TAG, error.getMessage());
                        }
                    });
                }

            }
        });

如果有人知道我在这里做错了什么或可以提供帮助,非常欢迎您。

Ticherhaz 自由巴勒斯坦

我希望您像这样构建数据库 json。

-users
   -userUid
      -name: "Ticherhaz"
      -others: "Master"
   -userUid2
      -name: "Pyke"
      -others: "Bronze"
-path
   -userUid
      -pathUid
         -achievement: "Eat without using hand"
         -date: "12/02/2022"
      -pathUid2
         -achievement: "Wake up early"
         -date: "12/02/2022"
   -userUid2
      -pathUid3
         -achievement: "Feeding team"
         -date: "13/02/2022"

既然您说要创建随机 Uid,您可以使用 Firebase pushId您可以在此处参考Firebase 推送 ID

    add_new.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if( !Validate_text() ){
                return;
            }
            else{
                String ach = milestone.getEditText().getText().toString().trim();
                int day = picker.getDayOfMonth();
                int month = picker.getMonth();
                int year = picker.getYear();
                String date = day + "/" + month + "/" + year ;

                Map<String, Object> updates = new HashMap<String, Object>();
                updates.put("Achievement : ", ach);
                updates.put("Date", date);

                final String pushId = FirebaseDatabase.getInstance().getReference().push().getKey(); //Create new random Id
                FirebaseDatabase.getInstance().getReference().child("path").child(uid).child(pushId).setValue(updates).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        Toast.makeText(getApplicationContext(), "Your achievement has been updated.", Toast.LENGTH_LONG).show();
                        finish();
                        startActivity(new Intent(AddPath.this, Path.class));
                    }
                });
            }
        }
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何从Firebase实时数据库中获取属于随机密钥的子级的数据-使用react native?

无法显示Android中Firebase实时数据库中的随机数据

如何使用密钥从Firebase实时数据库中删除?

使用 android studio java Recycler 视图从 Firebase 实时数据库中删除节点

Flutter:StreamBuilder(使用Firebase实时数据库)中的项目随机排序

在Android中从Firebase实时数据库检索数据

无法在Android中更新Firebase实时数据库

Android Studio中的Firebase实时数据库节点中存在的子项数组

文件已上传但未显示在Firebase实时数据库中-Android Studio

Android:Firebase实时数据库

Firebase实时数据库通过uid检索数据并将其放入Varable Kotlin android

如何使用随机生成的ID将现有数据更新到Firebase实时数据库中的数据

如何使用Android Studio从Firebase实时数据库中的节点检索特定数据?

用于Firebase实时数据库/ Firebase身份验证的Android唯一密钥

Firebase 实时数据库 - 关于事件 - Javascript Deltasnapshot 和 Android Java DataSnapshot 之间的区别

如何在android studio 3.0中连接firebase并通过按钮将数据存储在实时数据库中

无法使用 FIrebase 实时数据库通过他的电子邮件检索好友密钥

如何在firebase实时数据库android中的唯一键下获取特定节点

使用 firebase 实时数据库和 firebase 函数创建过期功能?

从Firebase实时数据库,Android Studio,Java获取数据

JAVA Android studio 不向 Firebase 实时数据库发送数据

Android Firebase 实时数据库获取数据太慢

Firebase 实时数据库读写数据协议与android

如何从android中的firebase实时数据库中获取数据

一些参数被插入到 firebase 实时数据库 Android Studio

如何使用 Cloud Functions 创建新的 Firebase 实时数据库实例?

Xamrin.Forms尝试使用Firebase实时数据库创建电子邮件检查

Android Firebase - 从 Firebase 实时数据库中检索特定值

Firebase实时数据库未检索版本apk中的数据[Android]