Как мне получить доступ к определенному значению из моей базы данных Firebase?

Я следил за видео на Youtube о доступе к определенному значению из моей базы данных, это именно то, что было в видео (за исключением того, что я изменил его на свои значения). Когда их приложение запускалось, оно произносило тост с соответствующими значениями. Когда я запускаю свой, я получаю сообщение об ошибке «К сожалению, приложение остановлено». Я что-то делаю не так или неправильно?

protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    FirebaseDatabase database = FirebaseDatabase.getInstance();
    test = database.getReference("https://matts-macros.firebaseio.com/values");
    test.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Map<String, String> data = (Map<String, String>) dataSnapshot.getValue();
            Toast.makeText(getApplicationContext(), "Value: + " + data.get("adjustedcarbs"), Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

Как мне получить доступ к определенному значению из моей базы данных Firebase?

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

Michael 27.03.2018 19:25

Я получаю сообщение об ошибке «java.lang.ClassCastException: java.lang.Long не может быть преобразован в java.langString» в строке моего тоста.

Matthew David Glynn 27.03.2018 19:34

Я относился к своим ценностям так, как если бы они были строками, а не длинными. Простое изменение Map <String, String> на Map <Long, Long> устранило мою проблему.

Matthew David Glynn 27.03.2018 19:37

Правильный способ - рассматривать ваши объекты как Map <String, Object>, проверьте мой ответ :)

Levi Moreira 27.03.2018 19:38
1
4
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы неправильно обращаетесь к ссылке. См. документы. Вам следует сделать одно из двух:

1) Замените это:

test = database.getReference("https://matts-macros.firebaseio.com/values");

с этим:

test = database.getReference().child("values");

2) Если вы хотите использовать свой URL-адрес, вам следует сделать это вместо этого:

String myUrl = "https://matts-macros.firebaseio.com/values";
test = FirebaseDatabase.getInstance().getReferenceFromUrl(myUrl);

Что касается вашей ошибки синтаксического анализа, попробуйте с Map<String,Object>:

Map<String, Object> data = (Map<String, Object>) dataSnapshot.getValue();

Хорошо заметный Леви! Спасибо за помощь другому разработчику Firebase!

Frank van Puffelen 27.03.2018 19:35

Спасибо за помощь! Я также рассматривал свои значения как строки, а не как длинные, что привело к закрытию моего приложения.

Matthew David Glynn 27.03.2018 19:38

да, это всегда меня тоже достает :)

Levi Moreira 27.03.2018 19:39

Другие вопросы по теме