Android Studio java.lang.NullPointerException:尝试调用虚方法

时间:2018-03-31 23:17:34

标签: java android android-studio-2.0

我从我的应用中获得的错误

我的错误

java.lang.NullPointerException: Attempt to invoke virtual method 

'java.lang.String com.populargeng.trackamechanic.Model.Client.getName()' on a 
null object reference

at com.populargeng.trackamechanic.Home$5$1.onDataChange(Home.java:355)

我编写的代码行

我的代码

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    // Because Client and User Model is same properties
    // So we can use the Client Model to get User here
    Client client = dataSnapshot.getValue(Client.class);

    // Add client to map
    mMap.addMarker(new MarkerOptions().position(new LatLng(location.latitude, location.longitude))
                            .flat(true).title(client.getName())
                            .snippet("Phone: "+client.getPhone())
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.repair)));
                }

请问我该怎么纠正这个..?它工作得比较早,但现在已不再适用了

1 个答案:

答案 0 :(得分:2)

从异常消息java.lang.String com.populargeng.trackamechanic.Model.Client.getName()可以看出,此错误取决于您返回的数据,即dataSnapshot为空或无法填充Client.class,因为dataSnapshot.getValue(Client.class)正在返回一个null对象。要解决此问题,您必须调整Client课程或至少使用空检查包围您的通话,以确保不会添加空数据:

if (client != null) {
    // Add client to map
    mMap.addMarker(new MarkerOptions().position(new LatLng(location.latitude, location.longitude))
                        .flat(true).title(client.getName())
                        .snippet("Phone: "+client.getPhone())
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.repair)));
            }
}