Skip to content

Commit b8fa9ca

Browse files
Fixed StackOverflow issue for @AfterTextChange
1 parent fea3dd3 commit b8fa9ca

1 file changed

Lines changed: 12 additions & 10 deletions

File tree

AndroidAnnotations/androidannotations/src/main/java/com/googlecode/androidannotations/processing/AfterTextChangeProcessor.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.googlecode.androidannotations.rclass.IRClass;
3131
import com.sun.codemodel.JBlock;
3232
import com.sun.codemodel.JCodeModel;
33+
import com.sun.codemodel.JExpression;
3334
import com.sun.codemodel.JFieldRef;
3435
import com.sun.codemodel.JInvocation;
3536
import com.sun.codemodel.JMethod;
@@ -41,7 +42,7 @@
4142
public class AfterTextChangeProcessor implements ElementProcessor {
4243

4344
private final TextWatcherHelper helper;
44-
45+
4546
private final APTCodeModelHelper codeModelHelper;
4647

4748
public AfterTextChangeProcessor(ProcessingEnvironment processingEnv, IRClass rClass) {
@@ -67,11 +68,11 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
6768
int editableParameterPosition = -1;
6869
int viewParameterPosition = -1;
6970
TypeMirror viewParameterType = null;
70-
71-
for (int i = 0 ; i < parameters.size() ; i++) {
71+
72+
for (int i = 0; i < parameters.size(); i++) {
7273
VariableElement parameter = parameters.get(i);
7374
TypeMirror parameterType = parameter.asType();
74-
75+
7576
if ("android.text.Editable".equals(parameterType.toString())) {
7677
editableParameterPosition = i;
7778
} else {
@@ -85,7 +86,7 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
8586
}
8687

8788
AfterTextChange annotation = element.getAnnotation(AfterTextChange.class);
88-
89+
8990
List<JFieldRef> idsRefs = helper.extractFieldRefsFromAnnotationValues(element, annotation.value(), "AfterTextChanged", holder);
9091

9192
for (JFieldRef idRef : idsRefs) {
@@ -96,12 +97,13 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
9697

9798
JBlock previousBody = codeModelHelper.removeBody(methodToCall);
9899
JBlock methodBody = methodToCall.body();
99-
100+
100101
methodBody.add(previousBody);
101-
textChangeCall = methodBody.invoke(methodName);
102+
JExpression activityRef = holder.eBean.staticRef("this");
103+
textChangeCall = methodBody.invoke(activityRef, methodName);
102104

103-
for (int i = 0 ; i < parameters.size() ; i++) {
104-
if (i == editableParameterPosition) {
105+
for (int i = 0; i < parameters.size(); i++) {
106+
if (i == editableParameterPosition) {
105107
JVar afterTextChangeEditableParam = codeModelHelper.findParameterByName(methodToCall, "s");
106108
textChangeCall.arg(afterTextChangeEditableParam);
107109
} else if (i == viewParameterPosition) {
@@ -113,5 +115,5 @@ public void process(Element element, JCodeModel codeModel, EBeansHolder activiti
113115
}
114116

115117
}
116-
118+
117119
}

0 commit comments

Comments
 (0)