本帖最后由 j67065 于 2012-06-18 14:46:07 编辑

解决方案 »

  1.   

    建议发该文件完整的源码以及出错完整提示Log
      

  2.   

    06-18 08:56:19.466: W/KeyCharacterMap(1097): No keyboard for id 0
    06-18 08:56:19.466: W/KeyCharacterMap(1097): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    06-18 08:56:21.964: D/szipinf(1097): Initializing inflate state
    06-18 08:56:22.054: D/szipinf(1097): Initializing zlib to inflate
    06-18 08:56:34.638: I/TAG(1097): [TextWatcher][onTextChanged]c
    06-18 08:56:34.638: I/TAG1(1097): 0
    06-18 08:56:34.643: I/TAG2(1097): 0
    06-18 08:56:34.643: I/TAG3(1097): 1
    06-18 08:56:37.112: I/TAG(1097): [TextWatcher][onTextChanged]ca
    06-18 08:56:37.112: I/TAG1(1097): 0
    06-18 08:56:37.112: I/TAG2(1097): 1
    06-18 08:56:37.122: I/TAG3(1097): 2
    06-18 08:56:38.772: I/TAG(1097): [TextWatcher][onTextChanged]cab
    06-18 08:56:38.822: I/TAG1(1097): 0
    06-18 08:56:38.822: I/TAG2(1097): 2
    android.widget.TextView.checkForRelayout(TextView.java:5491)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2724)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2592)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.EditText.setText(EditText.java:78)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2567)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.setText(TextView.java:2727)
    com.main.Display$6.onTextChanged(Display.java:207)
    06-18 08:56:44.172: E/AndroidRuntime(1097):  at android.widget.TextView.sendOnT
      

  3.   

     //拼写单词设置
             
            edittext1=(EditText)findViewById(R.id.edittext1);
            edittext1.addTextChangedListener(new TextWatcher(){ @Override
    public void afterTextChanged(Editable arg0) {
    // TODO Auto-generated method stub
    //arg0.clear();
    } @Override
    public void beforeTextChanged(CharSequence arg0, int arg1,
    int arg2, int arg3) {
    // TODO Auto-generated method stub

    } @Override
    public void onTextChanged(CharSequence s, int arg1, int arg2,
    int arg3) {
    // TODO Auto-generated method stub
    String strs=textview2.getText().toString();
    char[]  character=strs.toCharArray();
    String st=edittext1.getText().toString();
    char[] dechar=st.toCharArray();
    int len=st.length();

    if(len<=character.length&&dechar[len-1]!=character[len-1]){
    SpannableStringBuilder style=new SpannableStringBuilder(st);  
    Log.i("XML", strs);
    style.setSpan(new ForegroundColorSpan(Color.RED),len-1,len,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
    Log.i("XML", Integer.toString(len));
    edittext1.setText(style);    



    }


    Log.i("TAG","[TextWatcher][onTextChanged]"+s);
    Log.i("TAG1", Integer.toString(arg1));
    Log.i("TAG2", Integer.toString(arg2));
    Log.i("TAG3", Integer.toString(arg3));
    }
            
            
            });
      

  4.   

    edittext1.addTextChangedListener(new TextWatcher(){
    ......public void onTextChanged() {
    ... ...
    edittext1.setText(style); }上面这两个是不是导致死循环了?
      

  5.   

    是的,那请教一下,如何修改呢?引用edittex监听的目的,是在edittext中没输入一个字母与已有的字符串比较不同的字母设为红色,向大侠请教,谢谢!
      

  6.   

    做个判断,如果是设置颜色的那么就不执行edittext1.setText(style); 
      

  7.   

    递归了吧,看起来,多大的栈都解决不了这个问题。我之前碰到一个例子,是我之前调试vellemo运行后,栈溢出导致程序退出的问题。原因也很简单,是show一个drawable引起的:默认的drawable是一个xml文件,比如叫aaa.xml, 真正的图片是放在drawable-xxx目录下的aaa.png,刚好系统的配置项用的是ldpi,drawable-ldpi下没有aaa.png, 则系统就会挑选默认的drawable,解析出来就是aaa.xml
    依次类推,死循环了...你要看看你的edittext1.setText(style);  
    中的style,是不是也有此问题。从现象上看,应该是了。
      

  8.   

    判断可以有两种:
    1. 在beforeTextChanged中取出字符串和 onTexteChanged中的对比,如果一样那么说明是改变颜色的,那么就不设置颜色;
    2. 在改变颜色的edittext1.setText(style); 语句之前加一个标志flag = true;说明这次是改变颜色的,下次再进来的时候不设置颜色;
      

  9.   


    应该是对style的xml(里面应该是个reference,不是存储的实际值,至于何为xml的reference,可以去android的SDK文档看看)进行resolve,结果又resolve到自生来了,自身又是一个reference,reference又需要resolve,系统去做resolve,结果又resolve到自身来了,如此循环....
      

  10.   

    如果你找不到,把你的res打包给大家看看吧。 这个和代码无关,是你的res中的xml写的有问题。
      

  11.   

    这个跟xml文件没多大关系的,只是实现一个简单的拼写功能,将输入的英文字符与已有的字符串做比较,不同的字符变颜色