2012-05-09 2 views
0

Это приложение для калькулятора, когда я нажимаю foreg. 9, я получаю исключения нулевого указателя на линиях со звездами. Что может пойти не так? Я просто новичок.Исключения для исключения указателей исключений Отладка

nine.setOnClickListener(new OnClickListener() { 
       public void onClick(View arg0) { 
        String con= input.getText().toString();    
        handlenumber("9",con); ** 
       } 
private void handlenumber(String number,String com) ** 
    { 
     number=new String(); 
     com=new String(); 

     if(com.equals("0") || com.equals("") || r!=0){ 

      input.setText(number); **        
      r=0; 
     } 
     else 
      { 
      input.setText(com.concat(number));       
      } 
    } 

ответ

2

Из того, что вы показали, похоже, input имеет нулевое значение, убедитесь, что вы инициализировать его/назначить ей.

Кроме того, у вас есть два параметра, переданных в handlenumber, не переназначая им их использование. например удалите строки:

number=new String(); 
com=new String(); 
+0

OP показывает ошибку в 'input.setText (номер)' '.Здесь number' не может быть пустым как это передавая '' 9 "' как значение для 'number', поэтому он не будет бросать' NullPointerException'. Это может быть из-за 'number = new String();' – Nishant

+0

вот что я говорю, оно не может быть числом, поэтому оно должно быть 'input'. и нет проблемы с 'number = new String()' – MByD

+0

Ну, технически есть проблема с вызовом 'number = new String()' .., но это не вызывает сбой, поскольку вы можете назначить текст textview = null. Он просто уничтожает свои ценности. Скорее всего, «ввод» в этом случае равен нулю – dymmeh

0

Попробуйте удалить строку ниже из вашего кода:

number=new String(); 
    com=new String(); 

private void handlenumber(String number,String com) ** 
{ 
    if(com.equals("0") || com.equals("") || r!=0){ 

     input.setText(number); **        
     r=0; 
    } 
    else 
     { 
     input.setText(com.concat(number));       
     } 
}