Merge pull request #69 from Alsan/master

Fix for ResFileValue cast to ResAttr exception
This commit is contained in:
Connor Tumbleson 2013-01-19 10:03:53 -08:00
commit f2b1d377d5

View File

@ -50,12 +50,25 @@ public class ResStyleValue extends ResBagValue implements ResValuesXmlSerializab
for (int i = 0; i < mItems.length; i++) {
ResResSpec spec = mItems[i].m1.getReferent();
// hacky-fix remove bad ReferenceVars
if (spec.getDefaultResource().getValue().toString().contains("ResReferenceValue@")) {
continue;
}
ResAttr attr = (ResAttr) spec.getDefaultResource().getValue();
String value = attr.convertToResXmlFormat(mItems[i].m2);
// fix for ClassCastException by Alsan Wong <alsan.wong@gmail.com> at 2013/01/18 15:08
ResAttr attr = null;
String value = null;
try {
// hacky-fix remove bad ReferenceVars
ResValue attrValue = spec.getDefaultResource().getValue();
value = attrValue.toString(); // I know, this is not good, but I don't want another variable just for exception handling
if(true == value.contains("ResReferenceValue@")) {
continue;
}
attr = (ResAttr)attrValue;
value = attr.convertToResXmlFormat(mItems[i].m2);
} catch(ClassCastException e) {
System.out.println("ClassCastException: " + e.getMessage());
System.out.println(value);
}
if (value == null) {
value = mItems[i].m2.encodeAsResXmlValue();