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

Roly 2012-06-18 02:16:30
06-18 06:10:19.412: E/AndroidRuntime(505):
java.lang.StackOverflowError

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);



}


}


});
...全文
730 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roly 2012-06-19
  • 打赏
  • 举报
回复
这个跟xml文件没多大关系的,只是实现一个简单的拼写功能,将输入的英文字符与已有的字符串做比较,不同的字符变颜色
Roly 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

判断可以有两种:
1. 在beforeTextChanged中取出字符串和 onTexteChanged中的对比,如果一样那么说明是改变颜色的,那么就不设置颜色;
2. 在改变颜色的edittext1.setText(style); 语句之前加一个标志flag = true;说明这次是改变颜色的,下次再进来的时候不设置颜色;
[/Quote]按照你的方法二的话,那只能设置一次颜色,要是继续拼写的时候出错的话,字体颜色就没有变化了,方法一的话,我试下
freshui 2012-06-19
  • 打赏
  • 举报
回复
如果你找不到,把你的res打包给大家看看吧。 这个和代码无关,是你的res中的xml写的有问题。
freshui 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 11 楼 的回复:

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

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

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

应该是对style的xml(里面应该是个reference,不是存储的实际值,至于何为xml的reference,可以去android的SDK文档看看)进行resolve,结果又resolve到自生来了,自身又是一个reference,reference又需要resolve,系统去做resolve,结果又resolve到自身来了,如此循环....
ngf318 2012-06-19
  • 打赏
  • 举报
回复
判断可以有两种:
1. 在beforeTextChanged中取出字符串和 onTexteChanged中的对比,如果一样那么说明是改变颜色的,那么就不设置颜色;
2. 在改变颜色的edittext1.setText(style); 语句之前加一个标志flag = true;说明这次是改变颜色的,下次再进来的时候不设置颜色;
Roly 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

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

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

默认的drawable是一个xml文件,比如叫aaa.xml, 真正的图片是放在drawable-xxx目录下的aaa.png,刚好系统的配置项用的是ldpi,drawable-ldpi下没有aaa.pn……
[/Quote]11楼可否说明白点?
Roly 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

做个判断,如果是设置颜色的那么就不执行edittext1.setText(style);
[/Quote]那怎么让不设置颜色的不执行呢?不知10楼有没有办法解决?
freshui 2012-06-18
  • 打赏
  • 举报
回复
递归了吧,看起来,多大的栈都解决不了这个问题。

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

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

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

从现象上看,应该是了。


ngf318 2012-06-18
  • 打赏
  • 举报
回复
做个判断,如果是设置颜色的那么就不执行edittext1.setText(style);
Roly 2012-06-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

edittext1.addTextChangedListener(new TextWatcher(){
......

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

}

上面这两个是不是导致死循环了?
[/Quote]是的,那请教一下,如何修改呢?引用edittex监听的目的,是在edittext中没输入一个字母与已有的字符串比较不同的字母设为红色,向大侠请教,谢谢!
ngf318 2012-06-18
  • 打赏
  • 举报
回复
edittext1.addTextChangedListener(new TextWatcher(){
......

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

}

上面这两个是不是导致死循环了?
Roly 2012-06-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 4 楼 的回复:

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

ps:内容比较多,不能全部贴上,出错的地方基本给出来了,谢谢!
[/Quote] //拼写单词设置

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));
}


});
Roly 2012-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

建议发该文件完整的源码以及出错完整提示Log
[/Quote]
ps:内容比较多,不能全部贴上,出错的地方基本给出来了,谢谢!
Roly 2012-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

建议发该文件完整的源码以及出错完整提示Log
[/Quote]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

AMinfo 2012-06-18
  • 打赏
  • 举报
回复
建议发该文件完整的源码以及出错完整提示Log
Roly 2012-06-18
  • 打赏
  • 举报
回复
为什么没有人愿意帮忙???
Roly 2012-06-18
  • 打赏
  • 举报
回复
看过后的大神们,给点意见,感激不尽!
Roly 2012-06-18
  • 打赏
  • 举报
回复
谁能说说原因或者建议也可以,非常感谢!

80,357

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧