Firebase DatabaseException Проблема Не удалось преобразовать значение типа java.lang.Long в строку - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь получить значение name и phone как name = "name", phone = "123456".Как я могу решить это?

Структура моей базы данных: пользователи / драйверы (name = "Name", phone = "123456")

Класс My Rider:

public class Rider {
private  String name,email,password,phone;

public Rider(){}

public Rider(String name, String phone){

     this.name=name;
     this.phone=phone;
}


public String getName() {
    return name;
}

public String getPhone() {
    return phone;
}


public void setName(String name){

    this.name=name;

}

public void setPhone(String phone){

    this.phone=phone;

}

Класс моей активности:

  public void onKeyEntered(String key, GeoLocation location) {
            FirebaseDatabase.getInstance().getReference("Users").child("Drivers")
                    .child(key).addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    Rider rider=dataSnapshot.getValue(Rider.class);

                    mMap.addMarker(new MarkerOptions()
                            .position(new LatLng(mLastLocation.getLatitude(),mLastLocation.getLongitude()))
                            .flat(true)
                            .title(rider.getName())
                            .snippet("phone:"+rider.getPhone())
                            .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_car_background)));
                }

Ошибка: com.google.firebase.database.DatabaseException: Не удалось преобразовать значение типа java.lang.Long в строку

Ответы [ 4 ]

0 голосов
/ 15 июня 2019

У вас нет проблем с классом райдера.Ваша проблема Соответствует типу дочернего значения в базе данных Firebase

дочернее значение с => "" его строковое значение, если не имеет "", его целочисленное значение

Типы параметров вашей функции конструктора String yesЭто нормально, но параметры вашей функции конструктора имеют тот же тип дочерних значений базы данных Firebase.У меня есть проблема, как у вас, и я исправил эту проблему => измените дочернее значение 123456 на "123456" Наконец, вы исправили эту проблему

0 голосов
/ 19 октября 2018

Я думаю, что проблема в том, что вы НЕ добавили свой номер телефона между "" внутри БД Firebase.Это означает, что Firebase увидит это значение как Long, и вы хотите, чтобы оно было String в соответствии с предоставленным вами кодом.

Вместо этого добавьте значения в консоль Firebase DB следующим образом:

phone="123456"

enter image description here

На моем рисунке я хотел, чтобы число было целым или длинным.

Если вы хотите изменить значение в консоли Firebase,просто нажмите на значение и начните редактирование.

0 голосов
/ 19 октября 2018

Как я вижу, в вашей базе данных у вас есть телефон с некоторыми клавишами, который не является phone = "19485", а вместо этого - phone = 3947. Измените в тех местах, где нет "", для "".Вы можете редактировать их вручную из Firebase

0 голосов
/ 19 октября 2018

Кажется, что в FirebaseDatabase хранится как значение Long.Вы можете проверить и заменить эти значения в базе данных или создать другой установщик в классе модели, чтобы принимать значения Long.Затем вы можете использовать метод String.valueOf() для сохранения значения в приватном поле.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...