【问题标题】:I am getting can't pass null for argument 'pathString' in child() error in this code我在此代码中的 child() 错误中无法为参数 'pathString' 传递 null
【发布时间】:2020-03-07 08:46:22
【问题描述】:

我最近将 firebase 数据库 Orders 更改为 Location,我知道我在那里或这里遗漏了一些东西,但我找不到确切的问题。谁能指出我在这里做错了什么?

这是错误

2020-03-07 13:26:52.952 32564-32571/? E/zygote:向调试器发送回复失败:管道损坏 2020-03-07 13:26:54.048 32564-32620/com.example.policeemergencysystem E/eglCodecCommon:glUtilsParamSize:未知参数 0x000082da 2020-03-07 13:26:54.048 32564-32620/com.example.policeemergencysystem E/eglCodecCommon:glUtilsParamSize:未知参数 0x000082da 2020-03-07 13:27:09.533 32564-32564/? E/AndroidRuntime: 致命异常: main 进程:com.example.policeemergencysystem,PID:32564 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.policeemergencysystem/com.example.policeemergencysystem.AdminViewMapsActivity}:java.lang.NullPointerException:无法在 child() 中为参数“pathString”传递 null 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 引起:java.lang.NullPointerException:不能在 child() 中为参数 'pathString' 传递 null 在 com.google.firebase.database.DatabaseReference.child(com.google.firebase:firebase-database@@19.2.1:96) 在 com.example.policeemergencysystem.AdminViewMapsActivity.onCreate(AdminViewMapsActivity.java:38) 在 android.app.Activity.performCreate(Activity.java:6975) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

这是代码。

package com.example.policeemergencysystem;

import android.os.Bundle;

import androidx.fragment.app.FragmentActivity;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class AdminViewMapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;
    DatabaseReference mMaps;
    private String userID = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_admin_view_maps);
        userID = getIntent().getStringExtra("uid");


        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        mMaps = FirebaseDatabase.getInstance().getReference().child("Location").child(userID);
    }


    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        mMaps.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                double latitude = dataSnapshot.child("latitude").getValue(Double.class);
                double longitude = dataSnapshot.child("longitude").getValue(Double.class);
                LatLng latLng = new LatLng(latitude, longitude);
                mMap.addMarker(new MarkerOptions().position(latLng).title("Location"));
                CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(latLng)
                        .zoom(12).build();
                //Zoom in and animate the camera.
                mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }
}

这就是我的 firebase 数据库的样子 1st one

I change this table. (Orders to Location)

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    您的数据库显示没有 uid,而只有硬编码的管理员名称。

    mMaps = FirebaseDatabase.getInstance().getReference().child("Location").child("admin");
    

    使用上面的数据库参考。

    【讨论】:

    • 有很多用户。在所有用户登录后,他们标记他们的位置并将其转到 firebase 数据库。另外,管理员这么多,管理员必须能够看到用户的位置。如果我运行您在上面发布的代码会发生这种情况吗????
    • 您添加的数据库我发布了该问题的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多