ошибка, при которой вы указали: «Вы объявили об этом действии», когда я пытаюсь получить изображения из firebase - PullRequest
0 голосов

Я делаю портфельное приложение, которое хранит изображения в базе данных firebase с ящиком навигации, и когда я щелкаю свой TextView, который должен открыться, получаю изображение в firebase itcrash и говорит: «Невозможно найти явный класс активности {com.example.johan».johansteve / com.example.johan.johansteve.ImageActivity}; объявили ли вы это действие в своем AndroidManifest.xml? "

private Uri mImageUri;// получаем изображение и используем его для загрузки в базу данных

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);
}}

1 Ответ

1 голос
/ 22 мая 2019

Просто добавьте ImageActivity в AndroidManifest.xml

<application
    <activity android:name="com.example.johan.johansteve.ImageActivity"/>
</application>
...