Textwatcher gibt Stackoverflow-Fehler aus

Ich mache einen Längenkonverter, der TextWatcher verwendet. der verkürzte Code ist

 v1.addTextChangedListener(new TextWatcher() {

         @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                val1=Double.parseDouble(v1.getText().toString()); 
                val2=InchToCm(val1); 
                val3=InchToMl(val1);
                val4=InchToKm(val1);
                val5=InchToM(val1);
                val6=InchToY(val1);
                val7=InchToFt(val1);
                val8=InchToLg(val1);
                val9=InchToLgn(val1);
                val11=InchTomm(val1);
                val12=InchToNm(val1);


                v2. setText(Double.toString(val2)); 
                v3. setText(Double.toString(val3)); 
                v4. setText(Double.toString(val4)); 
                v5. setText(Double.toString(val5)); 
                v6. setText(Double.toString(val6)); 
                v7. setText(Double.toString(val7)); 
                v8. setText(Double.toString(val8));
                v9. setText(Double.toString(val9)); 
                v11. setText(Double.toString(val11)); 
                v12. setText(Double.toString(val12));

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
     v2.addTextChangedListener(new TextWatcher() {

         @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                val2=Double.parseDouble(v2.getText().toString()); 
                val1=CmToInch(val2);
                val3=CmToMl(val2);
                val4=CmToKm(val2);
                val5=CmToM(val2);
                val6=CmToY(val2);
                val7=CmToFt(val2);
                val8=CmToLg(val2);
                val9=CmToLgn(val2);
                val11=CmTomm(val2);
                val12=CmToNm(val2);

                v1. setText(Double.toString(val1)); 
                v3. setText(Double.toString(val3)); 
                v4. setText(Double.toString(val4)); 
                v5. setText(Double.toString(val5)); 
                v6. setText(Double.toString(val6)); 
                v7. setText(Double.toString(val7)); 
                v8. setText(Double.toString(val8));
                v9. setText(Double.toString(val9)); 
                v11. setText(Double.toString(val11)); 
                v12. setText(Double.toString(val12));

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

Ich erhalte einen Stackoverflow-Fehler, wenn ich den Textwatcher-Code für v2 vollständig entferne. Der Textwatcher für v1 funktioniert einwandfrei. Ich möchte nur, dass mein gesamter Edittext mit Textwatcher funktioniert. Was fehle ich und was soll ich ändern?

Hier ist der Kater

08-20 20:31:28.122: E/AndroidRuntime(30377): FATAL EXCEPTION: main
08-20 20:31:28.122: E/AndroidRuntime(30377): java.lang.StackOverflowError
08-20 20:31:28.122: E/AndroidRuntime(30377):    at           android.text.TextUtils.getChars(TextUtils.java:77)
08-20 20:31:28.122: E/AndroidRuntime(30377): android.text.TextUtils.indexOf(TextUtils.java:110)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at     android.text.StaticLayout.generate(StaticLayout.java:182)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.text.DynamicLayout.reflow(DynamicLayout.java:284)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.text.DynamicLayout.<init>(DynamicLayout.java:170)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.makeSingleLayout(TextView.java:6078)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.makeNewLayout(TextView.java:5976)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.checkForRelayout(TextView.java:6515)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.setText(TextView.java:3787)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.setText(TextView.java:3645)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.EditText.setText(EditText.java:80)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.setText(TextView.java:3620)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at com.tdx.simplelegthconverter.MainActivity$1.onTextChanged(MainActivity.java:55)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.sendOnTextChanged(TextView.java:7338)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.setText(TextView.java:3790)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.setText(TextView.java:3645)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.EditText.setText(EditText.java:80)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at android.widget.TextView.setText(TextView.java:3620)
08-20 20:31:28.122: E/AndroidRuntime(30377):    at   com.tdx.simplelegthconverter.MainActivity$2.onTextChanged(MainActivity.java:95)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage