Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 执行文本更改侦听器后出现致命错误 解决了的_Android - Fatal编程技术网

Android 执行文本更改侦听器后出现致命错误 解决了的

Android 执行文本更改侦听器后出现致命错误 解决了的,android,Android,我有一个应用程序,每当在EditText中更新搜索字符串时,它都会在arraylist中搜索。 我在EditText中添加了一个文本更改侦听器。它通常是有效的,但随机地我得到了一个致命的错误,在我的应用程序中没有参考行号(我使用的是EclipseLogcat) 我在代码中输入了日志输出,以查找执行的最后一行。出乎意料的是,这是在文本更改侦听器执行了它的所有代码之后,大概是在线程被返回到UI之后? 如果有任何帮助,我将不胜感激 以下是我的文本侦听器中的完整代码。我得到的日志输出表明它完成了这个函数

我有一个应用程序,每当在EditText中更新搜索字符串时,它都会在arraylist中搜索。 我在EditText中添加了一个文本更改侦听器。它通常是有效的,但随机地我得到了一个致命的错误,在我的应用程序中没有参考行号(我使用的是EclipseLogcat) 我在代码中输入了日志输出,以查找执行的最后一行。出乎意料的是,这是在文本更改侦听器执行了它的所有代码之后,大概是在线程被返回到UI之后? 如果有任何帮助,我将不胜感激

以下是我的文本侦听器中的完整代码。我得到的日志输出表明它完成了这个函数。那么线程在这之后会去哪里呢

 public void afterTextChanged(Editable s) {
            if (("" + inputField.getText()).length() > 0) {
                fullSearchString += ("" + inputField.getText()).trim();
                inputField.setText("");
                searchArray(fullSearchString);
                out("FINISHED Text change Listener");
            }
        }
这是堆栈跟踪

09-21 13:05:24.146: ERROR/AndroidRuntime(7660): FATAL EXCEPTION: main
09-21 13:05:24.146: ERROR/AndroidRuntime(7660): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at java.util.ArrayList.get(ArrayList.java:311)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.widget.TextView.sendAfterTextChanged(TextView.java:6194)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:6377)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.text.SpannableStringBuilder.sendTextHasChanged(SpannableStringBuilder.java:897)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:353)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:583)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:174)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:120)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:257)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.os.Looper.loop(Looper.java:123)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at java.lang.reflect.Method.invokeNative(Native Method)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at java.lang.reflect.Method.invoke(Method.java:521)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
09-21 13:05:24.146: ERROR/AndroidRuntime(7660):     at dalvik.system.NativeStart.main(Native Method)

无论您在侦听器中做什么,都是试图访问索引1,而它只有第0个元素(意味着它只有一个元素)。这可能是什么原因造成的?发布您的代码谢谢,添加了代码,searchArray()函数非常长,显然不是导致问题的原因…可能是吗?可能是这样,请发布该方法,可能是您正在使用的示例字符串。已解决(抱歉,还没有代表回答我自己的问题)我发现了问题的原因,在某些情况下,我的文本更改侦听器会被添加两次!由于侦听器的第一个实例更改EditText内容,因此第二个实例会导致致命异常。(仍然不知道为什么,但这并不重要!)我以前在动态添加侦听器时遇到过这种情况。我应该第一次就学会的!