java .lang.String нельзя преобразовать в java .lang.Long firebase realtime - PullRequest
0 голосов
/ 11 марта 2020

У меня эта ошибка, кто-нибудь знает, как исправить?

java.lang.String cannot be cast to java.lang.Long

LOGCAT

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long
        at com.appcom.Cassino$1.onDataChange(Cassino.java:68)
        at com.google.android.gms.internal.firebase_database.zzfc.zza(Unknown Source)
        at com.google.android.gms.internal.firebase_database.zzgx.zzdr(Unknown Source)
        at com.google.android.gms.internal.firebase_database.zzhd.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5254)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

ОШИБКА КОДА / ЛИНИИ

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    long v= (long) dataSnapshot.getValue(); // This is the line of error
    CountDownTimer countDownTimer=new CountDownTimer(v,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            mQnATimer.setText("time : "+millisUntilFinished/1000);
        }
        @Override
        public void onFinish() {

        }
    }.start();
}

Ответы [ 3 ]

1 голос
/ 11 марта 2020

Firebase считает значения без двойных кавычек длинными («8» для String и 8 для Long). Поэтому убедитесь, что в вашей базе данных Firebase есть данные String с двойными кавычками. Также используйте .parseLong() для конвертации.

1 голос
/ 11 марта 2020

Это выглядит как довольно простая проблема. Тем не менее, я не могу сказать наверняка, не видя вашу фактическую структуру данных.

Из logcat похоже, что вы получаете значение String, и, когда вы пытаетесь привести его к long, вы получаете исключение.

Я бы порекомендовал сделать следующее в этом случае.

Long v = Long.parseLong((String) dataSnapshot.getValue());

Если String не имеет действительного Long, то оно должно вызвать еще одно исключение. Однако, как я уже сказал, трудно понять точную проблему, не видя структуру базы данных с некоторыми примерами данных.

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

1 голос
/ 11 марта 2020

, если ваш результат - строка long, как показано ниже, вы должны использовать long.parseLong для преобразования. он не может напрямую к объекту Long.

String str = "21111";
long num = Long.parseLong(str);

Способ, который вы использовали, поддерживает только Parent для объекта SubClass.

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