Есть ли способ получить доступ к галерее из диалогового окна?

#android #android-studio #kotlin

#Android #android-studio #kotlin

Вопрос:

итак, я и 2 друга, мы выполняем работу, в которой нам нужно вводить продукты, а затем редактировать их, если мы того пожелаем, и когда мы их создаем и редактируем, мы решили сделать это во всплывающем окне (диалоге)… изображение ниже — это наше всплывающее окно для создания продукта… где предполагается добавить изображение из галереи при нажатии этой кнопки плюс. Может кто-нибудь сказать нам, возможно ли это сделать? или, если это должно быть действие, а не диалоговое окно (всплывающее окно). Изображение plus — это фон framelayout. Если код поможет запросить его, я его предоставлю! Заранее спасибо!

Ответ №1:

Да, вы можете получить доступ к своей галерее из диалога. вы можете использовать этот код в качестве подсказки

 private void uploadImage() {

        if(filePath != null)
        {
            final ProgressDialog progressDialog = new ProgressDialog(this);
            progressDialog.setTitle("Uploading...");
            progressDialog.show();
            StorageReference ref = storageReference.child("images/"  UUID.randomUUID().toString());
            ref.putFile(filePath)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            progressDialog.dismiss();
                            Toast.makeText(Newsfeed2.this, "Uploaded", Toast.LENGTH_SHORT).show();
                            edtDescription.setVisibility(View.VISIBLE);
                            FirebaseDatabase.getInstance().getReference().child("my_users").addChildEventListener(new ChildEventListener() {
                                @Override
                                public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
                                    String userName = (String) snapshot.child("username").getValue();
                                    userNames.add(userName);
                                    adapter.notifyDataSetChanged();

                                }

                                @Override
                                public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

                                }

                                @Override
                                public void onChildRemoved(@NonNull DataSnapshot snapshot) {

                                }

                                @Override
                                public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {

                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError error) {

                                }
                            });

                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            progressDialog.dismiss();
                            Toast.makeText(Newsfeed2.this, "Failed " 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());
                            progressDialog.setMessage("Uploaded " (int)progress "%");
                        }
                    });
        }
    }

}
 

Комментарии:

1. Итак, предполагается, что эта функция вызывается в прослушивателе кликов framelayout в моем диалоговом окне? Где вы получаете путь к файлу?

2. Да, вы должны добавить это. И для пути к файлу вы будете перенаправлены в вашу папку files, а внутри нее вы откроете галерею и выберете