如何确保使用GeoFire-removeLocation()不会导致我的应用崩溃?

时间:2019-05-17 14:02:50

标签: java geofire

当我实现使用Geo fire移除位置()从表中移除位置的代码时,应用崩溃。我正在使用Java Android Studio。

我尝试使用<component :is="'h'+someCondition">MY TITLE</component> 语句代替if仍然崩溃。

case

最终结果应该是使用Firebase数据库从表中删除了用户ID。

我得到的错误如下

    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;
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

我从SimCoder识别了此代码。我尝试过,它也可以与“如果”一起使用。 但是我也面临崩溃,但就我而言,只是我在grad:中的Build:app中实现了“ GeoFire-Java”,而不是“ Geofire-android”存储库。看看是否有帮助。

如果没有,我建议您检查声明的全局变量(即clientId)以及它们是否与代码一致。 无论哪种方式,如果您的代码引起问题或实现GeoFore,则位于“ If / Switch”之前和之后调用geoFire的调试模式下的断点都可以解决。

答案 1 :(得分:0)

我遵循了Yash Trivedi在这篇文章中的回答,并更改了我对 build.gradle(模块:***)

来自: implementation 'com.firebase:geofire-java:3.0.0'

至: implementation 'com.firebase:geofire-android:3.0.0'

现在可以正常使用