Firebase实时数据库不显示在

时间:2019-07-05 00:30:54

标签: android database firebase firebase-realtime-database

我是android编码的初学者,我在RT数据库中显示项目时遇到问题,这些项目不会显示,只有图像会上传到存储空间中

通过遵循教程,我首先使用了.getDownloadUrl()来编写了这段代码,然后我意识到现在不推荐使用此解决方案,因此我尝试了此解决方案,并且始终是相同的问题,即项目没有显示在RT数据库中,但是仅有图片上传到存储空间

这是代码:

public class AddProductActivity extends AppCompatActivity {

    private  static  final int PICK_IMAGE_REQUEST =1;
    private Button ChooseImage;
    private Button AddProductButton;
    private Button To_the_list;
    private EditText name;
    private ImageView item_image;
    private ProgressBar mProgressBar;

    private Uri mImageUri;

    private StorageReference mStorageRef;
    private DatabaseReference mDatabaseRef;

    private StorageTask mProductTask;

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

        ChooseImage = findViewById(R.id.choose_img);
        AddProductButton= findViewById(R.id.add_new_product);
        To_the_list = findViewById(R.id.to_list);
        name=findViewById(R.id.product_name);
        item_image=findViewById(R.id.product_image);
        mProgressBar= findViewById(R.id.progress_bar2);

        mStorageRef= FirebaseStorage.getInstance().getReference("Products");
        mDatabaseRef= FirebaseDatabase.getInstance().getReference("Products");

        ChooseImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }
        });

        AddProductButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ProductFile();
            }
        });

        To_the_list.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });
    }

    private void openFileChooser(){
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent,PICK_IMAGE_REQUEST);
    }

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

        if(requestCode == PICK_IMAGE_REQUEST && resultCode==RESULT_OK && data != null && data.getData() != null)
        {
            mImageUri = data.getData();

            Picasso.with(this).load(mImageUri).into(item_image);
        }
    }
    private String getFileExtension(Uri uri){
        ContentResolver cR = getContentResolver();
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return mime.getExtensionFromMimeType(cR.getType(uri));
    }
    private void ProductFile() {

        if (mImageUri != null) {
            final StorageReference fileReference = mStorageRef.child(System.currentTimeMillis() + "." + getFileExtension(mImageUri));
            mProductTask = fileReference.putFile(mImageUri);
            mProductTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
                @Override
                public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
                    if (!task.isSuccessful()) {
                        throw task.getException();
                    }
                    return fileReference.getDownloadUrl();
                }
            }).addOnCompleteListener(new OnCompleteListener<Uri>() {
                @Override
                public void onComplete(@NonNull Task<Uri> task) {
                    if (task.isSuccessful()) {

                        Handler handler = new Handler();
                        handler.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                mProgressBar.setProgress(0);
                            }
                        }, 500);

                        String downloadUri = task.getResult().toString();
                        Product submit = new Product(
                                name.getText().toString().trim(),
                                downloadUri);

                        String uploadId = mDatabaseRef.push().getKey();
                        mDatabaseRef.child(uploadId).setValue(submit);

                    } else {
                        Log.e("Upload","Upload failed");
                    }
                }
            })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {

                            Toast.makeText(AddProductActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();

                        }
                    });

        } else {

            Toast.makeText(this, "Other details not Provided", Toast.LENGTH_SHORT).show();
        }

    }

没有错误,但是图像显示在存储中,但是在实时数据库中什么也没有

0 个答案:

没有答案