给人以异常的的EditText设置的值 [英] gives Exception in set the value of EditText

查看:125
本文介绍了给人以异常的的EditText设置的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建阵列的动态三维2的EditText。我想送1的EditText的值,并将其设置为其他的EditText。它给了我异常的设置(EDITTEXT [2] [2] .setText(SS);)的EditText的值

 最后的EditText EDITTEXT [] [] =新的EditText [row_size] [col_size];
的for(int i = 0; I< row_size;我++){
  连续的TableRow =新的TableRow(本);
  A = I;
  对于(INT J = 0; J< col_size; J ++){
    最终诠释i_count = I;
    最终诠释j_count = j的;
    ID ++;
    EDITTEXT [I] [J] =新的EditText(本);
    allEds.add(EDITTEXT [I] [J]);
    EDITTEXT [I] [J] .setId(ID);
    hold_ids.add(EDITTEXT [I] [J] .getId());    EDITTEXT [I] [J] .setWidth(90);
    EDITTEXT [I] [J] .addTextChangedListener(新TextWatcher(){        公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,诠释计数){}
        公共无效beforeTextChanged(CharSequence中,诠释开始,诠释计数后INT){}
        @覆盖
          公共无效afterTextChanged(编辑S){
          。SS = EDITTEXT [i_count] [j_count] .getText()的toString();
          EDITTEXT [2] [2] .setText(β);
        }
      });

logcat的错误::

  03-30 17:28:27.695:E / AndroidRuntime(341):致命异常:主要
03-30 17:28:27.695:E / AndroidRuntime(341):java.lang.StackOverflowError
03-30 17:28:27.695:E / AndroidRuntime(341):在android.text.DynamicLayout.reflow(DynamicLayout.java:261)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.text.DynamicLayout<&初始化GT;(DynamicLayout.java:150)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.makeNewLayout(TextView.java:4993)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.checkForRelayout(TextView.java:5491)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2724)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695:E / AndroidRuntime(341):在android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695:E / AndroidRuntime(341):在project.Excel.AndroidProjectActivity $ 1.afterTextChanged(AndroidProjectActiv
03-30 17:28:31.234:I /流程(341):发送信号。 PID:341 SIG:9


解决方案

您这里有一个无限循环。唯一的例外是 java.lang.StackOverflowError (请参阅您的logcat的开始),因为当你调用 EDITTEXT [2] [2] .setText( SS) afterTextChanged()方法,产生回调到 afterTextChanged()的的EditText的方法查看您修改,并调用的setText(SS)产生另一个回调,等,等,广告infinitim(或者直到你得到的StackOverflowError)

您需要或者想这样做的另一种方式,或者至少找到一种方法来阻止无限递归。

I am creating dynamically 2 dimentional EditText of Array. And i want to get the value of 1 EditText and set it to another EditText. It gives me Exception on setting (editText[2][2].setText(ss);) the value of EditText.

final EditText editText[][] = new EditText[row_size][col_size];
for(int i=0;i<row_size;i++){
  TableRow row = new TableRow(this);
  a=i;
  for(int j=0;j<col_size;j++){
    final int i_count=i;
    final int j_count=j;
    id++;
    editText[i][j] = new EditText(this);                        
    allEds.add(editText[i][j]);
    editText[i][j].setId(id);
    hold_ids.add(editText[i][j].getId());

    editText[i][j].setWidth(90);
    editText[i][j].addTextChangedListener(new TextWatcher() {

        public void onTextChanged(CharSequence s, int start, int before, int count){}
        public void beforeTextChanged(CharSequence s, int start, int count,int after) {}
        @Override
          public void afterTextChanged(Editable s) {
          ss=editText[i_count][j_count].getText().toString();
          editText[2][2].setText(ss);
        }
      });

Logcat error::

03-30 17:28:27.695: E/AndroidRuntime(341): FATAL EXCEPTION: main
03-30 17:28:27.695: E/AndroidRuntime(341): java.lang.StackOverflowError
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.text.DynamicLayout.reflow(DynamicLayout.java:261)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.text.DynamicLayout.<init>(DynamicLayout.java:150)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.makeNewLayout(TextView.java:4993)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.checkForRelayout(TextView.java:5491)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2724)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActivity.java:107)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.sendAfterTextChanged(TextView.java:6309)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2731)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2592)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.EditText.setText(EditText.java:78)
03-30 17:28:27.695: E/AndroidRuntime(341):  at android.widget.TextView.setText(TextView.java:2567)
03-30 17:28:27.695: E/AndroidRuntime(341):  at project.Excel.AndroidProjectActivity$1.afterTextChanged(AndroidProjectActiv
03-30 17:28:31.234: I/Process(341): Sending signal. PID: 341 SIG: 9

解决方案

You have an infinite loop here. The exception is a java.lang.StackOverflowError (see the beginning of your logcat) because when you call editText[2][2].setText(ss) in your afterTextChanged() method, that generates a callback to the afterTextChanged() method of the EditText view that you modified, and that calls setText(ss) again which generates another callback, etc, etc, ad infinitim (or until you get a StackOverflowError).

You need to either think about another way of doing this, or at least find a way to stop the infinite recursion.

这篇关于给人以异常的的EditText设置的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆