Как я могу гарантировать, что использование GeoFire - removeLocation () не приведет к сбою моего приложения? - PullRequest
0 голосов
/ 17 мая 2019

Когда я реализую код для удаления местоположения из таблицы, используя Geo fire remove location (), приложение вылетает. Я использую Java Android Studio.

Я попытался использовать оператор if вместо case, он все равно вылетает.

    public void onLocationChanged(Location location) {
        if(getApplicationContext()!=null) {

            mLastLocation = location;

            // we get our location
            latLng = new LatLng(location.getLatitude(), location.getLongitude());
            //to make the camera update users location
            mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
            mMap.animateCamera(CameraUpdateFactory.zoomTo(15));

            String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
            DatabaseReference refAvailable = FirebaseDatabase.getInstance().getReference("postAvailable");
             DatabaseReference refWorking = FirebaseDatabase.getInstance().getReference("postsWorking");
            GeoFire geoFireAvailable = new GeoFire(refAvailable);
             GeoFire geoFireWorking = new GeoFire(refWorking);



            switch (clientId) {
                case "":
                    geoFireWorking.removeLocation(userId);
                    geoFireAvailable.setLocation(userId, new GeoLocation(location.getLatitude(), location.getLongitude()), new GeoFire.CompletionListener() {
                        @Override
                        public void onComplete(String userId, DatabaseError error) {

                            Toast.makeText(PostMapActivity.this, "you are available for work ", Toast.LENGTH_LONG).show();
                            //Do some stuff if you want

                        }
                    });

                    break;

                default:
                    geoFireAvailable.removeLocation(userId);
                    geoFireWorking.setLocation(userId, new GeoLocation(location.getLatitude(), location.getLongitude()), new GeoFire.CompletionListener() {
                        @Override
                        public void onComplete(String userId, DatabaseError error) {


                            //Do some stuff if you want

                        }
                    });
                    break;
            }
        }
    }

Конечным результатом должно быть удаление идентификатора пользователя из таблицы с использованием базы данных Firebase.

Ошибка, которую я получаю, выглядит следующим образом

2019-05-20 09:52:38.008 30269-30269/com.example.mwema.prewilda E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mwema.prewilda, PID: 30269
    java.lang.NoSuchMethodError: No virtual method setValue(Ljava/lang/Object;)Lcom/google/firebase/tasks/Task; in class Lcom/google/firebase/database/DatabaseReference; or its super classes (declaration of 'com.google.firebase.database.DatabaseReference' appears in /data/app/com.example.mwema.prewilda-fNa4IanDBCe7LNlkUFhIzw==/split_lib_dependencies_apk.apk)
        at com.firebase.geofire.GeoFire.removeLocation(GeoFire.java:215)
        at com.firebase.geofire.GeoFire.removeLocation(GeoFire.java:192)
        at com.example.mwema.prewilda.PostMapActivity.onLocationChanged(PostMapActivity.java:299)
        at com.google.android.gms.internal.location.zzay.notifyListener(Unknown Source:4)
        at com.google.android.gms.common.api.internal.ListenerHolder.notifyListenerInternal(Unknown Source:17)
        at com.google.android.gms.common.api.internal.ListenerHolder$zaa.handleMessage(Unknown Source:5)
        at android.os.Handler.dispatchMessage(Handler.java:109)
        at android.os.Looper.loop(Looper.java:166)
        at android.app.ActivityThread.main(ActivityThread.java:7555)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)
2019-05-20 09:52:38.020 30269-30269/com.example.mwema.prewilda I/Process: Sending signal. PID: 30269 SIG: 9
...