Просто я использую коде так:
if (respondsTo(editor, "apply")) invoke(editor, "apply”);
else editor.commit();
и у меня есть два магических метода в качестве статического импорта.
public static boolean respondsTo(Object object, String methodName) {
try {
object.getClass().getMethod(methodName, (Class<?>[]) null);
return Yes;
} catch (NoSuchMethodException e) {
return No;
}
}
public static Object invoke(Object object, String methodName) {
try {
return object.getClass().getMethod(methodName, (Class<?>[]) null).invoke(object);
} catch (Exception e) {
return INVOKE_FAILED;
}
}
Фиксация выполняется при блокировании пользовательского интерфейса, поэтому при сохранении больших данных могут возникнуть проблемы. Я использовал фоновый поток для коммита (это проблематично ...), но теперь у многих пользователей есть 2.3, так что я думаю, что старше следует переключиться ...