Когда я реализую код для удаления местоположения из таблицы, используя 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