diff --git a/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java b/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java index b4fb844069..80ef3712fb 100644 --- a/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java +++ b/android/sdk/src/main/java/com/taobao/weex/common/WXErrorCode.java @@ -219,6 +219,7 @@ public enum WXErrorCode { WX_RENDER_ERR_NULL_KEY("-9603", "WX_RENDER_ERR_NULL_KEY", ErrorType.NATIVE_ERROR, ErrorGroup.NATIVE), WX_RENDER_ERR_NATIVE_RUNTIME("-9604", "WX_RENDER_ERR for js error", ErrorType.RENDER_ERROR, ErrorGroup.NATIVE), WX_RENDER_ERR_COMPONENT_NOT_REGISTER("-9605", "WX_RENDER_ERR_COMPONENT_NOT_REGISTER", ErrorType.NATIVE_ERROR, ErrorGroup.NATIVE), + WX_RENDER_ERR_COMPONENT_ATTR_KEY("-9606", "The key passed to Component.updateAttr() is not string", ErrorType.NATIVE_ERROR, ErrorGroup.JS), WX_RENDER_ERR_BRIDGE_ARG_NULL("-9610", "WX_RENDER_ERR_BRIDGE_ARG_NULL", ErrorType.NATIVE_ERROR, ErrorGroup.NATIVE), WX_RENDER_ERR_CONTAINER_TYPE("-9611", "WX_RENDER_ERR_CONTAINER_TYPE", ErrorType.JS_ERROR,ErrorGroup.JS), WX_RENDER_ERR_TRANSITION("-9616", "WX_RENDER_ERR_TRANSITION", ErrorType.JS_ERROR, ErrorGroup.JS), diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java index e7be2ff6d4..6c2f5e5208 100644 --- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java +++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java @@ -707,7 +707,19 @@ public void updateProperties(Map props) { } for (Map.Entry entry : props.entrySet()) { - String key = entry.getKey(); + Object key_obj = entry.getKey(); + String key = WXUtils.getString(key_obj, null); + if (!(key_obj instanceof String)) { + Map map = new HashMap<>(); + map.put("componentType", getComponentType()); + map.put("actual key", key == null ? "" : key); + WXExceptionUtils.commitCriticalExceptionRT(getInstanceId(), + WXErrorCode.WX_RENDER_ERR_COMPONENT_ATTR_KEY, + "WXComponent.updateProperties", + WXErrorCode.WX_RENDER_ERR_COMPONENT_ATTR_KEY.getErrorMsg(), + map); + } + Object param = entry.getValue(); String value = WXUtils.getString(param, null);