2017-01-09 18 views
0

在Nativescript中编写应用程序。下面的设置工作正常,没有错误:Android Google Maps实用程序 - onClusterClick导致NullPointerException错误

// initialize cluster manager 
dis.cluster_manager = new dis.clustering.ClusterManager(app.android.context, dis.gMap); 
// Instantiate the cluster manager algorithm as is done in the ClusterManager, so we can access cluster items themselves, rather than cluster markers 
dis.cluster_manager_algorithm = new dis.clustering.algo.NonHierarchicalDistanceBasedAlgorithm(); 
dis.cluster_manager.setAlgorithm(dis.cluster_manager_algorithm); 

var CustomClusterRenderer = dis.clustering.view.DefaultClusterRenderer.extend({ 
    //constructor 
    init: function() {}, 
    onBeforeClusterItemRendered: function (item, markerOptions) { 
     console.log("onBeforeClusterItemRendered"); 
    }, 
    onBeforeClusterRendered: function (cluster, markerOptions) { 
     console.log("onBeforeClusterRendered!!!!!!!!!!"); 
    } 
}); 

dis.cluster_renderer = new CustomClusterRenderer(app.android.context, dis.gMap, dis.cluster_manager); 
dis.cluster_renderer.setMinClusterSize(1); 

dis.cluster_manager.setRenderer(dis.cluster_renderer); 

dis.gMap.setOnCameraIdleListener(dis.cluster_manager); 

// must be called after every unit add/remove 
dis.cluster_manager.cluster(); 

现在,我要听“集群点击”和“集群项目点击”。添加以下内容:

dis.gMap.setOnMarkerClickListener(dis.cluster_manager); 

dis.cluster_manager.setOnClusterClickListener(new dis.clustering.ClusterManager.OnClusterClickListener({ 
    onClusterClick: function(cluster) { 
     console.log("onClusterClick"); 
    } 
})); 

dis.cluster_manager.setOnClusterItemClickListener(new dis.clustering.ClusterManager.OnClusterItemClickListener({ 
    onClusterItemClick: function(item) { 
     console.log("onClusterItemClick"); 
    } 
})); 

它编译并运行正常,那就是,当我点击簇标记或集群项目的标记,我得到相应的console.log,但之后应用程序崩溃,我得到这个错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.langBoolean.booleanValue()' on a null object reference

任何想法?

回答

0

那么大,2天浪费了,不知道到底为什么呢源功能boolean类型:

public interface OnClusterClickListener<T extends ClusterItem> { 
    public boolean onClusterClick(Cluster<T> cluster); 
} 

事实证明,因为它期待一个布尔值。没有脑子...

dis.cluster_manager.setOnClusterClickListener(new dis.clustering.ClusterManager.OnClusterClickListener({ 
    onClusterClick: function(cluster) { 
     console.log("onClusterClick"); 
     return true; 
    } 
})); 
相关问题