#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, а внутри нее вы откроете галерею и выберете