2012-05-09 4 views
0

계산기 앱입니다. foreg를 클릭하면 계산기 앱입니다. 9, 별이있는 행에서 널 포인터 예외가 발생합니다. 무엇이 잘못 될 수 있습니까? 나는 초보자에 불과하다. null 인 당신이 나타났다는 input 것 같다에서널 포인터 예외 디버깅

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

, 당신은/초기화 그것을 할당해야합니다.

또한 두 개의 매개 변수가 handlenumber으로 전달되었으므로 매개 변수를 다시 지정하지 마십시오. 예 : 선을 제거합니다

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

영업 이익은 input.setText (수)'에서 오류를 보여주는를'라도 좋습니다는'number'는 같은 null 일 수 없습니다 ' "9"를'number'의 값으로 전달함으로써'NullPointerException'을 던지지 않을 것입니다. 그것은'number = new String();' – Nishant

+0

인데, 그게 숫자 일 수는 없으므로'input'이어야합니다. 'number = new String()'에 문제가 없습니다. – MByD

+0

기술적으로 'number = new String()'.. 호출시 문제가 발생하지만 textview의 text = 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));       
     } 
}