Geofire падает при записи в Firebase - PullRequest
0 голосов
/ 29 июня 2018

Я пишу программу для загрузки данных LatLng пользователя в Firebase. Он работает, нажав кнопку btnAddPickUpLocation , и загружает его в базу данных. Данные пользователя и Uid были инициированы в другой части кодов, и с этим нет проблем.

Lat Lng в настоящее время жестко запрограммирован, поэтому это не связано с этим источником переменной.

Прекрасно возвращается, когда я устанавливаю Toast для возврата Uid, и не вылетает, когда я комментирую

mGeofire.setLocation(Uid, new GeoLocation(37.7853889, -122.4056973));

Есть идеи, что не так с этим утверждением?

Соответствующие коды следующие.

 RelativeLayout contentView = findViewById(R.id.contentView);
    btnAddPickUpLocation = contentView.findViewById(R.id.btnAddPickUpLocation);
    btnAddPickUpLocation.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //AddPickUpLocation(FirebaseAuth.getInstance().getCurrentUser().getUid());

            String Uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

            Toast.makeText(getApplicationContext(), "hello " + Uid, Toast.LENGTH_LONG).show();
            //addPickUpLocation(FirebaseAuth.getInstance().getCurrentUser().getUid());

            dbAddPickUpLocation = FirebaseDatabase.getInstance().getReference("Favourites");

            mGeofire = new GeoFire(dbAddPickUpLocation);

            mGeofire.setLocation(Uid, new GeoLocation(37.7853889, -122.4056973));

        }

Подробности исключения приведены ниже

06-29 16: 31: 55.992 24528-24528 / com.abc.getataxi E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное Процесс: com.abc.getataxi, PID: 24528 java.lang.NoSuchMethodError: Нет виртуального метода setValue (Ljava / lang / Object; Ljava / lang / Object;) Lcom / google / firebase / tasks / Task; в классе Lcom / google / firebase / database / DatabaseReference; или его суперклассы (объявление com.google.firebase.database.DatabaseReference 'отображается в /data/app/com.abc.getataxi-51bdN05Z7tlQu3bNLaX2nQ==/split_lib_dependencies_apk.apk). на com.firebase.geofire.GeoFire.setLocation (GeoFire.java:182) на com.firebase.geofire.GeoFire.setLocation (GeoFire.java:154) на com.abc.getataxi.UserMainPage $ 2.onClick (UserMainPage.java:299) на android.view.View.performClick (View.java:6294) на android.view.View $ PerformClick.run (View.java:24770) на android.os.Handler.handleCallback (Handler.java:790) на android.os.Handler.dispatchMessage (Handler.java:99) на android.os.Looper.loop (Looper.java:164) на android.app.ActivityThread.main (ActivityThread.java:6494) в java.lang.reflect.Method.invoke (родной метод) в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:438) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:807)

1 Ответ

0 голосов
/ 29 июня 2018

удалось решить это обходным путем. Для любого парня, ищущего, добавьте параметры слушателя завершения как ниже.

mGeofire.setLocation(Uid, new GeoLocation(37.7853889, -122.4056973), new GeoFire.CompletionListener() {
                    @Override
                    public void onComplete(String key, DatabaseError error) {
                        Toast.makeText(getApplicationContext(), "Done ", Toast.LENGTH_LONG).show();
                    }
                });
...