【发布时间】:2014-03-13 20:31:08
【问题描述】:
我创建了一个EditText 并设置了它addtextchangedlistener。
代码是:
shared_tags.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
shared_tags.setText( shared_tags.getText().toString().toLowerCase().replace(" ", "#"));
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
但它给出的错误如下:
03-13 23:22:03.384: E/InputEventReceiver(19895): Exception dispatching input event.
03-13 23:22:03.384: E/MessageQueue-JNI(19895): Exception in MessageQueue callback: handleReceiveCallback
03-13 23:22:03.424: E/MessageQueue-JNI(19895): java.lang.StackOverflowError
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.graphics.Paint.getTextRunAdvances(Paint.java:1754)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.graphics.Paint.getTextRunAdvances(Paint.java:1720)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.text.MeasuredText.addStyleRun(MeasuredText.java:172)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.text.MeasuredText.addStyleRun(MeasuredText.java:212)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.text.StaticLayout.generate(StaticLayout.java:325)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.text.DynamicLayout.reflow(DynamicLayout.java:284)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.text.DynamicLayout.<init>(DynamicLayout.java:170)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.makeSingleLayout(TextView.java:6314)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.makeNewLayout(TextView.java:6208)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.checkForRelayout(TextView.java:6755)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3923)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.424: E/MessageQueue-JNI(19895): at android.wid
03-13 23:22:03.424: D/AndroidRuntime(19895): Shutting down VM
03-13 23:22:03.424: W/dalvikvm(19895): threadid=1: thread exiting with uncaught exception (group=0x4132fac8)
03-13 23:22:03.434: E/AndroidRuntime(19895): FATAL EXCEPTION: main
03-13 23:22:03.434: E/AndroidRuntime(19895): java.lang.StackOverflowError
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.graphics.Paint.getTextRunAdvances(Paint.java:1754)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.graphics.Paint.getTextRunAdvances(Paint.java:1720)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.text.MeasuredText.addStyleRun(MeasuredText.java:172)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.text.MeasuredText.addStyleRun(MeasuredText.java:212)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.text.StaticLayout.generate(StaticLayout.java:325)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.text.DynamicLayout.reflow(DynamicLayout.java:284)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.text.DynamicLayout.<init>(DynamicLayout.java:170)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.makeSingleLayout(TextView.java:6314)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.makeNewLayout(TextView.java:6208)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.checkForRelayout(TextView.java:6755)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3923)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3781)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.EditText.setText(EditText.java:99)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3756)
03-13 23:22:03.434: E/AndroidRuntime(19895): at com.wub.twostrangers.share_image$3.onTextChanged(share_image.java:236)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.sendOnTextChanged(TextView.java:7584)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3926)
03-13 23:22:03.434: E/AndroidRuntime(19895): at android.widget.TextView.setText(TextView.java:3
我的布局 xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<EditText
android:id="@+id/shared_tags"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:hint="@string/prompt_shared_tags"
android:singleLine="true"
android:maxLength="70"
/>
</RelativeLayout>
当我删除 addtextchangedlistener 时它可以工作,如果我想在我的 edittext 中写一些东西时把它放回去,它会给出这个错误
(回答后)
我编辑了我的问题,我理解了这个问题,我想为我的编辑框监听按键以检测用户按下空格,但我想在用户按下空格时立即替换,但是当我在我的编辑框中设置文本时,它将是递归的,我该如何解决?**
我该如何解决?
谢谢
【问题讨论】:
-
请在此处发布正在使用的 xml(layout) 文件。
-
TextView.java:7600哇,神器正在制作中。 -
我编辑了我的问题,请看
-
我认为问题不在于 addtextchangedlistener 。它在您的代码中的其他地方,因为 stackoverflow 错误通常由于递归而发生。你能再贴一些代码吗?
-
最后不需要分号
标签: java android keylistener