Java 如何在Firebase实时数据库中推送特定子树中的值

Java 如何在Firebase实时数据库中推送特定子树中的值,java,android,firebase,firebase-realtime-database,hashmap,Java,Android,Firebase,Firebase Realtime Database,Hashmap,我正在尝试将一个带有名称的url上载到Firebase数据库中的特定树子级 代码: public void UploadData(View view){ Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/gif"); startActivityForResult(intent,ImageBack); protected void onActi

我正在尝试将一个带有名称的url上载到Firebase数据库中的特定树子级

代码:

public void UploadData(View view){

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/gif");
        startActivityForResult(intent,ImageBack);

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Folder = FirebaseStorage.getInstance().getReference().child("ImageFolder");
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView2);
        source2 = textView.getText().toString();

        if(requestCode == SELECT_VIDEO){
            if(resultCode == RESULT_OK){
                Uri ImageData = data.getData();

                final StorageReference Imagename = Folder.child("image" + ImageData.getLastPathSegment());

          Imagename.putFile(ImageData).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

               //         Toast.makeText(realupload.this, "Uploaded", Toast.LENGTH_SHORT).show();

                        Imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {

                DatabaseReference imageStore = FirebaseDatabase.getInstance().getReference().child("main");
                                HashMap<String,String> hashMap = new HashMap<>();
                                hashMap.put(source2, String.valueOf(uri));

              imageStore.setValue(hashMap).addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {
                             Toast.makeText(realupload.this, "Finally Completed", Toast.LENGTH_SHORT).show();
                                    }
                                });

                            }
                        });
                    }
                });
            }
        }
    }
主子树是我要向其添加值的子树。


当前,当我使用它时,它将覆盖Firebase数据库中主子树中的所有值。如何更改它,使其不会覆盖我的主子树,而只需添加另一个名称及其下的值。

只需更新值即可。对于更新值,请使用此代码imageStore。updateChildrenhashMapto更新值

或者您可以替换下面的代码

public void UploadData(View view){

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/gif");
        startActivityForResult(intent,ImageBack);

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Folder = FirebaseStorage.getInstance().getReference().child("ImageFolder");
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView2);
        source2 = textView.getText().toString();

        if(requestCode == SELECT_VIDEO){
            if(resultCode == RESULT_OK){
                Uri ImageData = data.getData();

                final StorageReference Imagename = Folder.child("image" + ImageData.getLastPathSegment());

          Imagename.putFile(ImageData).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

               //         Toast.makeText(realupload.this, "Uploaded", Toast.LENGTH_SHORT).show();

                        Imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {

                DatabaseReference imageStore = FirebaseDatabase.getInstance().getReference().child("main");
                                HashMap<String,String> hashMap = new HashMap<>();
                                hashMap.put(source2, String.valueOf(uri));

              imageStore. updateChildren(hashMap).addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {
                             Toast.makeText(realupload.this, "Finally Completed", Toast.LENGTH_SHORT).show();
                                    }
                                });

                            }
                        });
                    }
                });
            }
        }
    }

有关更多信息,只需更新值即可。对于更新值,请使用此代码imageStore。updateChildrenhashMapto更新值

或者您可以替换下面的代码

public void UploadData(View view){

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/gif");
        startActivityForResult(intent,ImageBack);

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Folder = FirebaseStorage.getInstance().getReference().child("ImageFolder");
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView2);
        source2 = textView.getText().toString();

        if(requestCode == SELECT_VIDEO){
            if(resultCode == RESULT_OK){
                Uri ImageData = data.getData();

                final StorageReference Imagename = Folder.child("image" + ImageData.getLastPathSegment());

          Imagename.putFile(ImageData).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

               //         Toast.makeText(realupload.this, "Uploaded", Toast.LENGTH_SHORT).show();

                        Imagename.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {

                DatabaseReference imageStore = FirebaseDatabase.getInstance().getReference().child("main");
                                HashMap<String,String> hashMap = new HashMap<>();
                                hashMap.put(source2, String.valueOf(uri));

              imageStore. updateChildren(hashMap).addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {
                             Toast.makeText(realupload.this, "Finally Completed", Toast.LENGTH_SHORT).show();
                                    }
                                });

                            }
                        });
                    }
                });
            }
        }
    }
更多信息

我如何更改它,使其不会覆盖我的主子树,而只是添加另一个名称及其下的值

您可以使用updateChildren方法:

更多信息请点击此处:

我如何更改它,使其不会覆盖我的主子树,而只是添加另一个名称及其下的值

您可以使用updateChildren方法:

更多信息请点击此处:


您需要找到要更新的指定键


i、 e imageStore.childcinta.setValuevalue

您需要找到要更新的指定键


i、 e imageStore.childcinta.setValuevalue

firebase中没有带databaseReference.updateValue的方法firebase中没有带databaseReference.updateValue的方法