使用此功能时出现奇怪的错误。在新的设备和模拟器上运行良好,但在旧设备上测试应用程序时,它会崩溃..有关正在发生的事情的任何线索?
public boolean bind(ContentValues values ) throws DatabaseException {
if (values == null) throw new DatabaseException("Values is null");
ArrayList<String> columnNames = this.getColumnNamesArray(AppController.getDBO().getDatabase());
String currentKey = null;
try {
for (String key : values.keySet()) {
currentKey = key;
if (columnNames.contains(key)) {
if (values.get(key ) == null ) {
this._properties.putNull(key);
} else if (values.get(key) instanceof String) {
this._properties.put(key, values.getAsString(key));
} else if (values.get(key) instanceof Integer) {
this._properties.put(key, values.getAsInteger(key));
} else if (values.get(key) instanceof Boolean) {
this._properties.put(key, values.getAsBoolean(key));
} else if (values.get(key) instanceof Byte) {
this._properties.put(key, values.getAsByte(key));
} else if (values.get(key) instanceof Double) {
this._properties.put(key, values.getAsDouble(key));
} else if (values.get(key) instanceof Float) {
this._properties.put(key, values.getAsFloat(key));
} else if (values.get(key) instanceof Long) {
this._properties.put(key, values.getAsLong(key));
} else if (values.get(key) instanceof Short) {
this._properties.put(key, values.getAsShort(key));
}
}
}
} catch (Exception e) {
Log.e(AppController.DEBUG_TAG, "Exception raised: " + getClass().getSimpleName(), e);
throw new DatabaseException(e.toString(),currentKey);
} catch (NoSuchMethodError error) {
// Raised in old devices:
Log.wtf(AppController.ERROR_TAG, error.getMessage());
return false;
}
return true;
}
我得到的错误是:
E / AndroidRuntime:致命异常:主要 java.lang.NoSuchMethodError:keySet
提前致谢!
答案 0 :(得分:5)
旧Android设备上的ContentValues.keySet()中的NoSuchMethod错误
这意味着您需要为 API&lt; 使用不同的(变通方法)解决方案。 11 ,因为API中提供了keyset()。如何使用 API 1 提供的valueSet()?
// solution for API < 11
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
for (Entry<String, Object> item : cv.valueSet()) {
String key = item.getKey(); // getting key
Object value = item.getValue(); // getting value
...
// do your stuff
}
}
// solution for API >= 11
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// your current solution
}