首页 > 解决方案 > 如何在gettersetter类中将来自一个活动的图像Uri和来自另一个活动的数据发送到firebase

问题描述

/*her my ImgeUri will go to gettersetter class(upload) from on activity and  from another acitivty my data(name,cnic) go to same gettersetter class(upload) but it creates 2  different ids in firebaseDatabase ,1st for imageuri and 2nd for data(hamza,email,cnic)...i need both to imagruri and data to save in same id...i have given full detaill below..*/

// 下面是我的第一个活动,通过上传类(gettersetter 类)将 imgeUri 发送到 Firebase

private void uploadFile(){

        if(imgUri!=null){
            final ProgressDialog progressDialog=new ProgressDialog(this);
            progressDialog.setTitle("Uploading.....");
            progressDialog.show();

            StorageReference fileReference=mStorageRef.child(System.currentTimeMillis()+"." +getFileExtension(imgUri));
            fileReference.putFile(imgUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Handler handler=new Handler();
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            progressDialog.dismiss();
                        }
                    },500);
                    Toast.makeText(popQuickActivity.this, "Uploaded successfull", Toast.LENGTH_LONG).show();
                    upload upload=new upload(taskSnapshot.getDownloadUrl().toString());

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

                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(popQuickActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                    progressDialog.dismiss();

                }
            }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {

                    double progress=(100.0 *taskSnapshot.getBytesTransferred() /taskSnapshot.getTotalByteCount());
                    progressDialog.setMessage("Uploaded"+(int)progress+"%");

                }
            });


        }else {

            Toast.makeText(this, "No file Selected", Toast.LENGTH_SHORT).show();
        }
    }
}

//...............................................................................
//this one is 2nd activity which send data to firebase through upload class(gettersetter class)

    public void doIt(View view) {

        String Name=name.getText().toString().trim();
        String NoticeNo=noticeno.getText().toString().trim();
        String Cnic=cnic.getText().toString().trim();
        String AmountCharge=amountcharge.getText().toString().trim();
        String Date=date.getText().toString().trim();
        String Des=des.getText().toString().trim();



        upload upload=new upload(Name,NoticeNo,Date,AmountCharge,Des,Cnic);

        String uploadId=mDatabaseRef.push().getKey();
        mDatabaseRef.child(uploadId).setValue(upload);
    }
....................................................................
//this one is my upload class(gettersetter)





package com.example.syedhamzahanif.copproject;

public class upload {

    private String mImageUri;
    private String mNoticeNo;
    private String mName;
    private String mDate;
    private String mCharge;
    private String mDescription;
    private String mCnic;

    public upload(){

    }
public upload(String imguri){
        mImageUri=imguri;
}

    public upload(String name,String noticeNo,String date,String charge,String description,String cnic){

        if(description.trim().equals("")){

            description="No Description";
        }

        mName=name;
        mCharge=charge;
        mDate=date;
        mCnic=cnic;
        mNoticeNo=noticeNo;
        mDescription=description;


    }

    public String getmImageUri() {
        return mImageUri;
    }

    public void setmImageUri(String mImageUri) {
        this.mImageUri = mImageUri;
    }

    public String getmNoticeNo() {
        return mNoticeNo;
    }

    public void setmNoticeNo(String mNoticeNo) {
        this.mNoticeNo = mNoticeNo;
    }

    public String getmName() {
        return mName;
    }

    public void setmName(String mName) {
        this.mName = mName;
    }

    public String getmDate() {
        return mDate;
    }

    public void setmDate(String mDate) {
        this.mDate = mDate;
    }

    public String getmCharge() {
        return mCharge;
    }

    public void setmCharge(String mCharge) {
        this.mCharge = mCharge;
    }

    public String getmDescription() {
        return mDescription;
    }

    public void setmDescription(String mDescription) {
        this.mDescription = mDescription;
    }

    public String getmCnic() {
        return mCnic;
    }

    public void setmCnic(String mCnic) {
        this.mCnic = mCnic;
    }


}
//.................................................................
pls tell me how to store imguri and data both in same id thorugh diff activities..

标签: androidimagefirebaseandroid-intenturi

解决方案


在具有特殊数据类型Any的 kotlin 中非常容易

在java中,我认为你可以用泛型类型来做到这一点 Java Generics


推荐阅读