title: setText("") crashes Android application
body: <p>After hours of research and testing I haven't been able to figure out why my app is crashing when I invoke this </p>
  
  <pre><code>    inputLocation.setText("");  inputLocation.setText(null); 
  </code></pre>
  
  <p>It will work just fine with this: </p>
  
  <pre><code>    inputLocation.setText("your text");
  </code></pre>
  
  <p>or </p>
  
  <pre><code>    inputLocation.setText(editText.getText().toString()); 
  </code></pre>
  
  <p>etc.</p>
  
  <p>Any help would be highly appreciated.
  Thanks.</p>
  
  <p><strong>inputLocation.addTextChangedListener</strong></p>
  
  <pre><code>    // / Execute code without the use of the save changes button.
      // ///////////////////////////////////////////
      inputLocation.addTextChangedListener(new TextWatcher() {
          public void onTextChanged(CharSequence s, int start, int before,
                  int count) {
  
              /* Process to check type */
              String location_string = inputLocation.getText().toString();
              String first_location_char = location_string.substring(0, 1);
              if (inputLocation.getText().toString().length() == locationsize) {
                  String last_location_char = location_string.substring(8);
  
                  if (last_location_char.equals("L")
                          &amp;&amp; first_location_char.equals("L")) {
  
                      inputLocation.setText(location_string.substring(1, 8),
                              TextView.BufferType.EDITABLE);
                      new UpdateLocation().execute();
  
                  } else if (!first_location_char.isEmpty()
                          &amp;&amp; !last_location_char.isEmpty()) {
  
                      alertDialog = new AlertDialog.Builder(
                              CheckLocationActivity.this).create();
                      alertDialog.setTitle("Wrong Code for Location");
                      alertDialog
                              .setMessage("Please scan one more time the correct barcode!");
  
                      alertDialog.setButton(-1, getString(R.string.Ok),
                              new DialogInterface.OnClickListener() {
                                  @Override
                                  public void onClick(DialogInterface dialog,
                                          int which) {
                                      inputLocation.setText("",
                                              TextView.BufferType.EDITABLE);
                                  }
                              });
                      /*
                       * alertDialog.setButton(-2, getString(R.string.No), new
                       * DialogInterface.OnClickListener() {
                       * 
                       * @Override public void onClick(DialogInterface dialog,
                       * int which) { // do nothing dialog will dismiss } });
                       */
                      alertDialog.show();
  
                  }
  
              }
          }
  
          public void beforeTextChanged(CharSequence s, int start, int count,
                  int after) {
          }
  
          public void afterTextChanged(Editable s) {
          }
      });
  
      // / Execute code without the use of the save changes button.
      // ///////////////////////////////////////////
  </code></pre>
  
  <p><strong>Code Section</strong></p>
  
  <pre><code>    alertDialog = new AlertDialog.Builder(
                              CheckLocationActivity.this).create();
                      alertDialog.setTitle("Wrong Code for Location");
                      alertDialog
                              .setMessage("Please scan one more time the correct barcode!");
  
                      alertDialog.setButton(-1, getString(R.string.Ok),
                              new DialogInterface.OnClickListener() {
                                  @Override
                                  public void onClick(DialogInterface dialog,
                                          int which) {
                                      inputLocation.setText("",
                                              TextView.BufferType.EDITABLE);
                                  }
                              });
                      /*
                       * alertDialog.setButton(-2, getString(R.string.No), new
                       * DialogInterface.OnClickListener() {
                       * 
                       * @Override public void onClick(DialogInterface dialog,
                       * int which) { // do nothing dialog will dismiss } });
                       */
                      alertDialog.show();
  </code></pre>
  
  <p><strong>Log File</strong></p>
  
  <pre>11-05 16:41:33.638: W/dalvikvm(19191): threadid=1: thread exiting with uncaught exception (group=0x41513700)
  11-05 16:41:33.648: E/AndroidRuntime(19191): FATAL EXCEPTION: main
  11-05 16:41:33.648: E/AndroidRuntime(19191): java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=1
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.String.startEndAndLength(String.java:583)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.String.substring(String.java:1464)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.dev.assetlocation.CheckLocationActivity$3.onTextChanged(CheckLocationActivity.java:162)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.sendOnTextChanged(TextView.java:7318)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.setText(TextView.java:3774)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.setText(TextView.java:3629)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.EditText.setText(EditText.java:80)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.setText(TextView.java:3604)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.dev.assetlocation.CheckLocationActivity$2.onTextChanged(CheckLocationActivity.java:103)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.sendOnTextChanged(TextView.java:7318)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView.handleTextChanged(TextView.java:7377)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:9076)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:962)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:496)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:435)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:30)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:673)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:197)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:183)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:279)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.os.Handler.dispatchMessage(Handler.java:99)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.os.Looper.loop(Looper.java:137)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at android.app.ActivityThread.main(ActivityThread.java:5103)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.reflect.Method.invokeNative(Native Method)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at java.lang.reflect.Method.invoke(Method.java:525)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  11-05 16:41:33.648: E/AndroidRuntime(19191):    at dalvik.system.NativeStart.main(Native Method)
  11-05 16:41:36.201: D/libEGL(19240): loaded /system/lib/egl/libEGL_adreno200.so
  11-05 16:41:36.201: D/libEGL(19240): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
  11-05 16:41:36.201: D/libEGL(19240): loaded /system/lib/egl/libGLESv2_adreno200.so
  11-05 16:41:36.211: I/Adreno200-EGL(19240): : EGL 1.4 QUALCOMM Build: Iabe52cfaeae4c5fab1acacfe6f056ba15fa93274
  11-05 16:41:36.241: D/OpenGLRenderer(19240): Enabling debug mode 0
  </pre>