public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); map = new MapView(this); ArcGISTiledMapServiceLayer basemap = new ArcGISTiledMapServiceLayer("http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"); ArcGISFeatureLayer fl1 = new ArcGISFeatureLayer("http://sampleserver5a.arcgisonline.com/arcgis/rest/services/LocalGovernment/Recreation/FeatureServer/0",ArcGISFeatureLayer.MODE.ONDEMAND); map.addLayer(basemap); map.addLayer(fl1); setContentView(map); map.setOnLongPressListener(new OnLongPressListener() { private static final long serialVersionUID = 1L; private ArcGISFeatureLayer featureLayer = null; public void onLongPress(float x, float y) { if (map.isLoaded()) { if (progressDialog != null && progressDialog.isShowing() && count.intValue() == 0) progressDialog.dismiss(); // Get the point featurelayer Layer[] layers = map.getLayers(); for (Layer layer : layers) { if (layer instanceof ArcGISFeatureLayer) { ArcGISFeatureLayer fl = (ArcGISFeatureLayer) layer; if (fl.getGeometryType() == Geometry.Type.POINT) { featureLayer = fl; break; } } } int layerID = (int) featureLayer.getID(); if (featureLayer == null) return; PopupInfo popupInfo = featureLayer.getPopupInfo(layerID); if (popupInfo == null) return; // Create a new graphic Point point = map.toMapPoint(x, y); Graphic graphic; FeatureType[] types = featureLayer.getTypes(); if (types == null || types.length < 1) { FeatureTemplate[] templates = featureLayer.getTemplates(); if (templates == null || templates.length < 1) { graphic = new Graphic(point, null); } else { graphic = featureLayer.createFeatureWithTemplate(templates[0], point); } } else { graphic = featureLayer.createFeatureWithType(featureLayer.getTypes()[0], point); } // Instantiate a PopupContainer popupContainer = new PopupContainer(map); // Add Popup Popup popup = featureLayer.createPopup(map, 0, graphic); popup.setEditMode(true); popupContainer.addPopup(popup); createEditorBar(featureLayer, false); // Create a dialog for the popups and display it. popupDialog = new PopupDialog(map.getContext(), popupContainer); popupDialog.show(); } } }); }
I don't know exactly how to deal with this, but I've found that ArcGISFeatureLayer's method createPopupInfo() can create an instance of PopupInfo that can be added to FeatureLayer via setPopupInfos method.
Have you resolved your problem already?