2017-01-09 17 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; 
    } 
})); 
相關問題