Tiger Prajapati Ответов: 0

Ошибка: не удается найти символ messagetextbody.put(“message”, task.getresult().getdownloadurl().tostring());


Я получаю ошибку, когда компилирую приложение. В нем говорится, что
task.getResult().getDownloadUrl().toString() не может найти символ
filePath.putFile(fileUri).addOnCompleteListener(task -> {
         if (task.isSuccessful()){
                        Map messageTextBody = new HashMap();
                        messageTextBody.put("message", task.getResult().getDownloadUrl().toString());
                        messageTextBody.put("name", fileUri.getLastPathSegment());
                        messageTextBody.put("type", checker);
                        messageTextBody.put("from", messageSenderID);
                        messageTextBody.put("to", messageReceiverID);
                        messageTextBody.put("messageID", messagePushID);
                        messageTextBody.put("time", saveCurrentTime);
                        messageTextBody.put("date", saveCurrentDate);
                        Map messageBodyDetails = new HashMap();
                        messageBodyDetails.put(messageSenderRef + "/" + messagePushID, messageTextBody);
                        messageBodyDetails.put(messageReceiverRef + "/" + messagePushID, messageTextBody);
                        RootRef.updateChildren(messageBodyDetails);
                        loadingBar.dismiss();
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        loadingBar.dismiss();
                        Toast.makeText(ChatActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double p = (100.0*taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
                        loadingBar.setMessage((int) p + " % Uploading...");
                    }
                });


Что я уже пробовал:

пытался использовать этот код
filePath.putFile(fileUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {
                                String downloadUrl = uri.toString();

                                Map messageImageBody = new HashMap();
                                messageImageBody.put("message", taskSnapshot.getStorage().getDownloadUrl());
                                messageImageBody.put("name",fileUri.getLastPathSegment());
                                messageImageBody.put("type",checker);
                                messageImageBody.put("from",messageSenderID);
                                messageImageBody.put("to", messageReceiverID);
                                messageImageBody.put("messageID", messagePushID);
                                messageImageBody.put("time", saveCurrentTime);
                                messageImageBody.put("date", saveCurrentDate);


                                Map messageBodyDetail = new HashMap();
                                messageBodyDetail.put(messageSenderRef+ "/" + messagePushID, messageImageBody);
                                messageBodyDetail.put(messageReceiverRef+ "/" + messagePushID, messageImageBody);

                                RootRef.updateChildren(messageBodyDetail);
                                loadingBar.dismiss();

                            }
                        }).addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                loadingBar.dismiss();
                                Toast.makeText(ChatActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double p = (100.0* taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
                        loadingBar.setMessage((int) p + " % Uploading...");
                    }
                });


но приложение получает сбой при нажатии на файл вот ссылка на исходный код приложения Болтать

Richard MacCutchan

Вам нужно использовать отладчик, чтобы узнать, какой элемент он не может найти.

Tiger Prajapati

ну я забыл упомянуть в ответе, что я новичок в android и как я решаю некоторые проблемы, все еще есть много проблем, которые я не могу решить, например, если я загружаю изображение или какой-то документ в разделе чата с одним человеком чат, то он показывает 2 раза в чате, а когда я закрываю чат и снова открываю чат, то он показывает только один раз. кроме того, получатель не может открыть файл документа.

Richard MacCutchan

Вот почему вам нужно использовать отладчик. Возьмите каждую проблему по очереди и попытайтесь выяснить, почему это происходит. Часто он будет связан с данными, которые пытается обработать ваше приложение; он может быть недействительным, или ваш код принимает определенный формат и т. д. Но только вы можете сделать это, поскольку только у вас есть данные для прохождения через код. Это все часть обучения, чтобы быть разработчиком. Писать код легко, но заставить его работать правильно часто бывает очень трудно.

ZurdoDev

ОП говорит, что ошибка происходит при компиляции, а это значит, что отладчик не поможет. Отладчик еще не запущен во время компиляции.

ZurdoDev

Как сказал Ричард, для такого рода проблем вам нужно использовать отладчик, чтобы увидеть, почему вещи ведут себя так, как они делают. Но мы не видим, что вы делаете, поэтому ничем не можем помочь.

А утверждения типа "получатель не может открыть файл документа" ни для кого больше ничего не значат. Вам нужно отладить, а затем предоставить подробную информацию.

Richard MacCutchan

И последнее предложение говорит, что приложение падает при нажатии на файл. Как и многие разработчики, он не понимает, где заканчивается компиляция и начинается приложение.

ZurdoDev

Правда.

0 Ответов