ArcGIS Runtime SDK for Android 100.1.x日期類型字段屬性無法保存

 報錯代碼如下

Feature addedFeature = mFeatureLayerTrack.getFeatureTable().createFeature(); addedFeature.setGeometry(polyline); //獲取要素屬性結構
Map<String, Object> attrs = addedFeature.getAttributes(); 
attrs.put("RecordTime", new Date());//記錄當前時間:在這裏出錯

報錯信息如下:

03-26 15:51:44.983 27424-27424/com..E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    Process: com.., PID: 27424
                                                                    java.lang.UnsupportedOperationException: Conversion to CoreElement not implemented: class java.util.Date
                                                                        at com.esri.arcgisruntime.internal.n.g.a(SourceFile:528)
                                                                        at com.esri.arcgisruntime.internal.n.k$b.a(SourceFile:452)
                                                                        at com.esri.arcgisruntime.internal.n.k$b.add(SourceFile:399)
                                                                        at com.esri.arcgisruntime.internal.n.g.a(SourceFile:762)
                                                                        at com.esri.arcgisruntime.data.FeatureTable.createFeature(SourceFile:535)
                                                                        at com.esri.arcgisruntime.internal.g.b$1.run(SourceFile:57)
                                                                        at android.os.Handler.handleCallback(Handler.java:754)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                        at android.os.Looper.loop(Looper.java:163)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6393)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)

跟進源碼:

 public static <E> CoreElement a(E var0) {
        CoreElement var1 = a.a(var0);
        if(var1 != null) {
            return var1;
        } else {
            if(var0 instanceof Attachment) {
                var1 = a((Attachment)var0);
            } else if(var0 instanceof Layer) {
                var1 = a((Layer)var0);
            } else if(var0 instanceof Short) {
                var1 = a((Short)var0);
            } else if(var0 instanceof Integer) {
                var1 = a((Integer)var0);
            } else if(var0 instanceof Long) {
                var1 = a((Long)var0);
            } else if(var0 instanceof Float) {
                var1 = a((Float)var0);
            } else if(var0 instanceof Double) {
                var1 = a((Double)var0);
            } else if(var0 instanceof String) {
                var1 = a((String)var0);
            } else if(var0 instanceof Bookmark) {
                var1 = a((Bookmark)var0);
            } else if(var0 instanceof ClassBreak) {
                var1 = a((ClassBreak)var0);
            } else if(var0 instanceof Geometry) {
                var1 = a((Geometry)var0);
            } else if(var0 instanceof LevelOfDetail) {
                var1 = a((LevelOfDetail)var0);
            } else if(var0 instanceof OrderBy) {
                var1 = a((OrderBy)var0);
            } else if(var0 instanceof Calendar) {
                var1 = a((Calendar)var0);
            } else if(var0 instanceof Boolean) {
                var1 = a((Boolean)var0);
            } else if(var0 instanceof Graphic) {
                var1 = a((Graphic)var0);
            } else if(var0 instanceof GraphicsOverlay) {
                var1 = a((GraphicsOverlay)var0);
            } else if(var0 instanceof UniqueValue) {
                var1 = a((UniqueValue)var0);
            } else if(var0 instanceof Feature) {
                var1 = a((Feature)var0);
            } else if(var0 instanceof Stop) {
                var1 = f.a((Stop)var0);
            } else if(var0 instanceof Facility) {
                var1 = f.a((Facility)var0);
            } else if(var0 instanceof Incident) {
                var1 = f.a((Incident)var0);
            } else if(var0 instanceof ServiceAreaFacility) {
                var1 = f.a((ServiceAreaFacility)var0);
            } else if(var0 instanceof PointBarrier) {
                var1 = f.a((PointBarrier)var0);
            } else if(var0 instanceof PolylineBarrier) {
                var1 = f.a((PolylineBarrier)var0);
            } else if(var0 instanceof PolygonBarrier) {
                var1 = f.a((PolygonBarrier)var0);
            } else if(var0 instanceof PopupField) {
                var1 = a((PopupField)var0);
            } else if(var0 instanceof PopupMedia) {
                var1 = a((PopupMedia)var0);
            } else if(var0 instanceof PopupRelatedFeaturesSortOrder) {
                var1 = a((PopupRelatedFeaturesSortOrder)var0);
            } else if(var0 instanceof Symbol) {
                var1 = a((Symbol)var0);
            } else if(var0 instanceof GenerateLayerOption) {
                var1 = a((GenerateLayerOption)var0);
            } else if(var0 instanceof SyncLayerOption) {
                var1 = a((SyncLayerOption)var0);
            } else if(var0 instanceof Map) {
                var1 = CoreElement.a(a((Map)var0, String.class, Object.class));
            } else if(var0 instanceof AttributeParameterValue) {
                var1 = a((AttributeParameterValue)var0);
            } else if(var0 instanceof GeoprocessingParameter) {
                var1 = a((GeoprocessingParameter)var0);
            } else if(var0 instanceof Field) {
                var1 = a((Field)var0);
            } else if(var0 instanceof FeatureCollectionTable) {
                var1 = a((FeatureCollectionTable)var0);
            } else if(var0 instanceof FeatureQueryResult) {
                var1 = a((FeatureQueryResult)var0);
            } else if(var0 instanceof GeoprocessingFeatureSet) {
                var1 = a((GeoprocessingFeatureSet)var0);
            } else if(var0 instanceof Range) {
                var1 = a((Range)var0);
            } else if(var0 instanceof ElevationSource) {
                var1 = a((ElevationSource)var0);
            } else if(var0 instanceof ArcGISSublayer) {
                var1 = a((ArcGISSublayer)var0);
            } else if(var0 instanceof ArcGISFeatureTable) {
                var1 = a((ArcGISFeatureTable)var0);
            } else if(var0 instanceof LabelDefinition) {
                var1 = a((LabelDefinition)var0);
            } else {
                if(var0 != null) {
                    throw new UnsupportedOperationException("Conversion to CoreElement not implemented: " + var0.getClass());
                }

                var1 = new CoreElement();
            }

            return var1;
        }
    }

從此可以看出是對傳入的map參數進行類型判斷,其中並沒有Date類型,所以發生異常。列出的所有日期類型只有

Calendar

所以將日期類型用Calendar

Feature addedFeature = mFeatureLayerTrack.getFeatureTable().createFeature(); addedFeature.setGeometry(polyline); //獲取要素屬性結構
Map<String, Object> attrs = addedFeature.getAttributes(); 
 Calendar calendar =Calendar.getInstance();
attrs.put("RecordTime", calendar);//此處修改

問題解決!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章