首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

java.lang.StackOverflowError,具体的异常信息以及相关代码已贴出,实在找不出解决方案,各位大侠们帮帮忙

2012-06-21 
java.lang.StackOverflowError,具体的错误信息以及相关代码已贴出,实在找不出解决方案,各位大侠们帮帮忙06

java.lang.StackOverflowError,具体的错误信息以及相关代码已贴出,实在找不出解决方案,各位大侠们帮帮忙
06-18 06:10:19.412: E/AndroidRuntime(505):

Java code
java.lang.StackOverflowError
[code=Java][/code]
06-18 06:10:19.412: E/AndroidRuntime(505): at android.text.TextUtils.getChars(TextUtils.java:69)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.text.method.ReplacementTransformationMethod$ReplacementCharSequence.getChars(ReplacementTransformationMethod.java:151)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.text.TextUtils.getChars(TextUtils.java:69)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.text.TextUtils.indexOf(TextUtils.java:102)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.text.StaticLayout.generate(StaticLayout.java:131)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.text.DynamicLayout.reflow(DynamicLayout.java:261)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.text.DynamicLayout.<init>(DynamicLayout.java:150)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.makeNewLayout(TextView.java:4993)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.checkForRelayout(TextView.java:5491)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2724)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)


06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnTextChanged(TextView.java:6295)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2727)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2592)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.EditText.setText(EditText.java:78)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.setText(TextView.java:2567)
06-18 06:10:19.412: E/AndroidRuntime(505): at com.main.Display$6.onTextChanged(Display.java:204)
06-18 06:10:19.412: E/AndroidRuntime(505): at android.widget.TextView.sendOnT



相关代码:edittext1=(EditText)findViewById(R.id.edittext1);
  edittext1.addTextChangedListener(new TextWatcher(){

@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub

}

@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(arg3<=character.length&&dechar[arg3-1]!=character[arg3-1]){
SpannableStringBuilder style=new SpannableStringBuilder(st);  
style.setSpan(new ForegroundColorSpan(Color.RED),len-1,len,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
edittext1.setText(style);  



}


}
 
 
  });
 

[解决办法]
edittext1.addTextChangedListener(new TextWatcher(){
......

public void onTextChanged() {
... ...
edittext1.setText(style); 

}

上面这两个是不是导致死循环了?

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

[解决办法]
递归了吧,看起来,多大的栈都解决不了这个问题。

我之前碰到一个例子,是我之前调试vellemo运行后,栈溢出导致程序退出的问题。原因也很简单,是show一个drawable引起的:

默认的drawable是一个xml文件,比如叫aaa.xml, 真正的图片是放在drawable-xxx目录下的aaa.png,刚好系统的配置项用的是ldpi,drawable-ldpi下没有aaa.png, 则系统就会挑选默认的drawable,解析出来就是aaa.xml
依次类推,死循环了...

你要看看你的edittext1.setText(style);
中的style,是不是也有此问题。

从现象上看,应该是了。



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

探讨
引用:

递归了吧,看起来,多大的栈都解决不了这个问题。

我之前碰到一个例子,是我之前调试vellemo运行后,栈溢出导致程序退出的问题。原因也很简单,是show一个drawable引起的:

默认的drawable是一个xml文件,比如叫aaa.xml, 真正的图片是放在drawable-xxx目录下的aaa.png,刚好系统的配置项用的是ldpi,drawabl……

热点排行