Android 错误地说;您是否已宣布此活动;当我尝试从firebase检索图像时

Android 错误地说;您是否已宣布此活动;当我尝试从firebase检索图像时,android,image,firebase,declaration,picasso,Android,Image,Firebase,Declaration,Picasso,我正在制作一个公文包应用程序,用导航抽屉在firebase上存储图像,当我点击我的文本视图(应该打开)时,它会在firebase itcrash上获取图像,并说“无法找到显式活动类{com.example.johan.johansteve/com.example.johan.johansteve.ImageActivity}”;您是否在AndroidManifest.xml中声明了此活动?” 私有Uri-mimageri; //获取图像并使用它上载到数据库 private StorageRefe

我正在制作一个公文包应用程序,用导航抽屉在firebase上存储图像,当我点击我的文本视图(应该打开)时,它会在firebase itcrash上获取图像,并说“无法找到显式活动类{com.example.johan.johansteve/com.example.johan.johansteve.ImageActivity}”;您是否在AndroidManifest.xml中声明了此活动?”

私有Uri-mimageri; //获取图像并使用它上载到数据库

private StorageReference mStorageRef;
private DatabaseReference mDatabaseRef;

private StorageTask mUploadTask;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =  inflater.inflate(R.layout.fragment_portfolio, container,false);

    mButtonChooseImage = v.findViewById(R.id.buttonChooseImage);
    mButtonUpload = v.findViewById(R.id.uploadButton);
    mTextViewShowUploads = v.findViewById(R.id.Text_View_uploads);
    mEditTextFileName = v.findViewById(R.id.edit_text_file_name);
    mImageView = v.findViewById(R.id.imageViewAction);
    mProgressBar = v.findViewById(R.id.progress_Bar);

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


    //setOnClickListener method used to put actions into our views
    mButtonChooseImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openFileChooser();
            //method made to choose the type of file

        }
    });

    mButtonUpload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mUploadTask != null && mUploadTask.isInProgress()){
                Toast.makeText(getContext(),"upload in progress", Toast.LENGTH_SHORT).show();
            }else {
                uploadFile();
            }

        }
    });

    mTextViewShowUploads.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            openImagesActivity();

        }
    });

return v;
}
private void openFileChooser() {
    Intent intent = new Intent();
    intent.setType("image/*"); // declaration of the type of file to be selected
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, PICK_IMAGE_REQUEST); //used it for identify the type of dta we are retrieving


}

// method called when the file is selected
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

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

        //process of image selecting using comparation

        mImageUri = data.getData(); //used to upload in fireBase


        Picasso.get().load(mImageUri).into(mImageView);
        //mImageView.setImageURI(mImageUri); native way without picasso

    }
}

private String getFileExtension(Uri uri){
    ContentResolver cR = getContext().getContentResolver();
    MimeTypeMap mime = MimeTypeMap.getSingleton();
    return mime.getExtensionFromMimeType(cR.getType(uri));
    //this method is only used to get extension from our file eg.jpg

}

private void uploadFile(){
    if (mImageUri != null){
        StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
                + "." + getFileExtension(mImageUri));

        mUploadTask = fileReference.putFile(mImageUri)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    private static final String TAG ="ImagesActivity ";

                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Handler handler = new Handler();
                        handler.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                mProgressBar.setProgress(0);
                            }
                        },500);
                        //delays the progress bar to 5 seconds so teh user gets a visual feedback

                        Toast.makeText(getActivity(), "Upload Successful",Toast.LENGTH_LONG).show();
                        /**

                         Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),
                         taskSnapshot.getStorage().getDownloadUrl().toString());
                         **/


                        Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
                        while (!urlTask.isSuccessful());
                        Uri downloadUrl = urlTask.getResult();

                        Log.d(TAG, "onSuccess: fireBase download url: " + downloadUrl.toString());
                        Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),downloadUrl.toString());

                        String uploadId = mDatabaseRef.push().getKey();
                        mDatabaseRef.child(uploadId).setValue(upload);
                        //create a new entry with contents the meter data of our uploads
                        //recycler view will use these entries to get the data from there


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

                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
                        mProgressBar.setProgress((int) progress);

                    }
                });

    }else{
        Toast.makeText(getContext(),"No File Selected",Toast.LENGTH_SHORT).show();

    }

}

private void openImagesActivity(){
    Intent intent = new Intent(getActivity(),ImageActivity.class);
    startActivity(intent);
}}
private-StorageReference-mStorageRef;
私有数据库引用mDatabaseRef;
专用存储任务mUploadTask;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment_公文包,容器,假);
mButtonChooseImage=v.findViewById(R.id.buttonChooseImage);
mButtonUpload=v.findviewbyd(R.id.uploadButton);
mTextViewShowUploads=v.findviewbyd(R.id.Text\u View\u uploads);
mEditTextFileName=v.findviewbyd(R.id.edit\u text\u file\u name);
mImageView=v.findviewbyd(R.id.imageViewAction);
mProgressBar=v.findViewById(R.id.progress\u Bar);
mStorageRef=FirebaseStorage.getInstance().getReference(“上传”);
mDatabaseRef=FirebaseDatabase.getInstance().getReference(“上载”);
//setOnClickListener方法,用于将操作放入视图中
mButtonChooseImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
openFileChooser();
//方法来选择文件的类型
}
});
mButtonUpload.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mUploadTask!=null&&mUploadTask.isInProgress()){
Toast.makeText(getContext(),“正在上载”,Toast.LENGTH_SHORT.show();
}否则{
上传文件();
}
}
});
mTextViewShowUploads.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
openImagesActivity();
}
});
返回v;
}
私有void openFileChooser(){
意图=新意图();
intent.setType(“image/*”);//要选择的文件类型的声明
intent.setAction(intent.ACTION\u GET\u CONTENT);
startActivityForResult(intent,PICK_IMAGE_REQUEST);//用于标识我们正在检索的dta的类型
}
//选择文件时调用的方法
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
如果(requestCode==PICK\u IMAGE\u REQUEST&&resultCode==RESULT\u OK
&&数据!=null&&data.getData()!=null){
//基于比较的图像选择过程
mimageri=data.getData();//用于在fireBase中上载
Picasso.get().load(mimageri).into(mImageView);
//setImageURI(mimageri);没有毕加索的原生方式
}
}
私有字符串getFileExtension(Uri){
ContentResolver cR=getContext().getContentResolver();
MimeTypeMap mime=MimeTypeMap.getSingleton();
返回mime.getExtensionFromMimeType(cR.getType(uri));
//此方法仅用于从文件eg.jpg获取扩展名
}
私有void上传文件(){
if(mimageri!=null){
StorageReference fileReference=mStorageRef.child(System.currentTimeMillis()
+“+getFileExtension(mimageri));
mUploadTask=fileReference.putFile(mimageri)
.addOnSuccessListener(新的OnSuccessListener(){
私有静态最终字符串标记=“ImagesActivity”;
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
Handler=newhandler();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
mProgressBar.setProgress(0);
}
},500);
//将进度条延迟到5秒,以便用户获得视觉反馈
Toast.makeText(getActivity(),“上载成功”,Toast.LENGTH_LONG.show();
/**
Upload Upload=新上载(mEditTextFileName.getText().toString().trim(),
taskSnapshot.getStorage().getDownloadUrl().toString());
**/
Task urlTask=taskSnapshot.getStorage().getDownloadUrl();
而(!urlTask.issusccessful());
Uri downloadUrl=urlTask.getResult();
Log.d(标记“onSuccess:fireBase下载url:”+downloadUrl.toString());
Upload Upload=新上载(mEditTextFileName.getText().toString().trim(),downloadUrl.toString());
字符串uploadId=mDatabaseRef.push().getKey();
mDatabaseRef.child(uploadId).setValue(upload);
//创建一个新条目,其中包含我们上传的仪表数据
//recycler视图将使用这些条目从中获取数据
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(getContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
双进度=(100.0
<application
    <activity android:name="com.example.johan.johansteve.ImageActivity"/>
</application>