2013-10-14 2 views
0

Iam дает некоторые значения в EditText, но если я пытаюсь удалить его с помощью кнопки backspack и ввести новый value..It становится ForceClosed.How к решить эту проблемуКак остановить «заставить закрыть» ошибку

Мой код приведен ниже

empty_cyl_recvd = (EditText) findViewById(R.id.empty_cyl_recvd); 
new_cyl_recvd = (EditText) findViewById(R.id.new_cyl_recvd); 
filled_cyl_unload = (EditText) findViewById(R.id.filled_cyl_unload);`enter code here` 
    dmg_cyl_recvd = (EditText) findViewById(R.id.dmg_cyl_recvd);  

    total_dmg_cyl=(EditText)findViewById(R.id.sdff); 
    total_empty_cyl=(EditText)findViewById(R.id.wertyu);  
    total_filled_cyl=(EditText)findViewById(R.id.gfhgftg); 

empty_cyl_recvd.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 arg0, int arg1, int arg2, 
        int arg3) { 

    int a=Integer.parseInt(empty_cyl_recvd.getText().toString());    int b=Integer.parseInt(Util.EMPTY_LIST.get(0).toString()); 
       int c=a+b; 
       total_empty_cyl.setText(""+c); 


          }}); 

     filled_cyl_unload.addTextChangedListener(new TextWatcher() 
     { 

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

      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 

       int a=Integer.parseInt(filled_cyl_unload.getText().toString()); 
       int b=Integer.parseInt(Util.FILL_LIST.get(0).toString()); 
       int c=a+b; 
       total_filled_cyl.setText(""+c); 


     }); 


     dmg_cyl_recvd.addTextChangedListener(new TextWatcher(){ 

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

      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 

       int a=Integer.parseInt(dmg_cyl_recvd.getText().toString()); 
       int b=Integer.parseInt(Util.DAMAGE_LIST.get(0).toString()); 
       int c=a+b; 
           total_dmg_cyl.setText(""+c); 


     });`` 
+0

Добавить пустой чек для всех EditText перед разбором в integer в onTextChanged. –

+0

Что вы хотите достичь? Хотите что-то отфильтровать? –

+0

, чтобы остановить силовое закрытие put onTextChanged() код внутри try {} catch() {} block. –

ответ

0

В первую очередь я предлагаю вам использовать отладчик, который поможет вам быстро поймать такие проблемы.

в коде onTextChange есть возможность исключений (NPE/NumberFormat/ArrayIndexOutOfBounds). Поэтому, чтобы правильно проверить этот код

int a,b; 
if(dmg_cyl_recvd.getText() != null && !dmg_cyl_recvd.getText().trim().equals("")) // also put it in try-catch for the case the input is not numeric 
try{ 
    a=Integer.parseInt(dmg_cyl_recvd.getText().toString()); 
}catch(NumberFormatException ex){ 
//alert user about wrong input 
} 
if(Util.DAMAGE_LIST.size() > 0)//assuming it is a list, if not use method that gives the size of corresponding collection 
    b=Integer.parseInt(Util.DAMAGE_LIST.get(0).toString()); 
0

Добавить правильную обработку исключений, чтобы избежать принудительного закрытия. Вероятно, вы получаете NumberFormatException в Integer.parseInt (..), когда он получает пустой/недопустимый текст.

Смежные вопросы