summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/animation/PropertyValuesHolder.java32
1 files changed, 22 insertions, 10 deletions
diff --git a/core/java/android/animation/PropertyValuesHolder.java b/core/java/android/animation/PropertyValuesHolder.java
index 58f23f7517ca..5b1a7cf209ff 100644
--- a/core/java/android/animation/PropertyValuesHolder.java
+++ b/core/java/android/animation/PropertyValuesHolder.java
@@ -384,8 +384,7 @@ public class PropertyValuesHolder implements Cloneable {
try {
returnVal = targetClass.getMethod(methodName, args);
} catch (NoSuchMethodException e) {
- Log.e("PropertyValuesHolder",
- "Couldn't find no-arg method for property " + mPropertyName + ": " + e);
+ // Swallow the error, log it later
}
} else {
args = new Class[1];
@@ -412,9 +411,12 @@ public class PropertyValuesHolder implements Cloneable {
}
}
// If we got here, then no appropriate function was found
- Log.e("PropertyValuesHolder",
- "Couldn't find setter/getter for property " + mPropertyName +
- " with value type "+ mValueType);
+ }
+
+ if (returnVal == null) {
+ Log.w("PropertyValuesHolder", "Method " +
+ getMethodName(prefix, mPropertyName) + "() with type " + mValueType +
+ " not found on target class " + targetClass);
}
return returnVal;
@@ -495,7 +497,7 @@ public class PropertyValuesHolder implements Cloneable {
}
return;
} catch (ClassCastException e) {
- Log.e("PropertyValuesHolder","No such property (" + mProperty.getName() +
+ Log.w("PropertyValuesHolder","No such property (" + mProperty.getName() +
") on target object " + target + ". Trying reflection instead");
mProperty = null;
}
@@ -508,6 +510,10 @@ public class PropertyValuesHolder implements Cloneable {
if (!kf.hasValue()) {
if (mGetter == null) {
setupGetter(targetClass);
+ if (mGetter == null) {
+ // Already logged the error - just return to avoid NPE
+ return;
+ }
}
try {
kf.setValue(mGetter.invoke(target));
@@ -535,6 +541,10 @@ public class PropertyValuesHolder implements Cloneable {
if (mGetter == null) {
Class targetClass = target.getClass();
setupGetter(targetClass);
+ if (mGetter == null) {
+ // Already logged the error - just return to avoid NPE
+ return;
+ }
}
kf.setValue(mGetter.invoke(target));
} catch (InvocationTargetException e) {
@@ -854,8 +864,9 @@ public class PropertyValuesHolder implements Cloneable {
}
}
} catch (NoSuchMethodError e) {
- Log.d("PropertyValuesHolder",
- "Can't find native method using JNI, use reflection" + e);
+ // Couldn't find it via JNI - try reflection next. Probably means the method
+ // doesn't exist, or the type is wrong. An error will be logged later if
+ // reflection fails as well.
} finally {
mPropertyMapLock.writeLock().unlock();
}
@@ -990,8 +1001,9 @@ public class PropertyValuesHolder implements Cloneable {
}
}
} catch (NoSuchMethodError e) {
- Log.d("PropertyValuesHolder",
- "Can't find native method using JNI, use reflection" + e);
+ // Couldn't find it via JNI - try reflection next. Probably means the method
+ // doesn't exist, or the type is wrong. An error will be logged later if
+ // reflection fails as well.
} finally {
mPropertyMapLock.writeLock().unlock();
}