2012-04-10 5 views
0

У меня нет абсолютно никакой идеи, почему я получаю nullpointerexception здесь, потому что почти этот же точный код работал в другой программе. Надеюсь, это просто.Почему я получаю nullpointerexception (Android)?

Вот LogCat:

04-09 08:18:57.903: ERROR/AndroidRuntime(14378): java.lang.NullPointerException 
04-09 08:18:57.903: ERROR/AndroidRuntime(14378):  at com.prattia.webs.cheaterphysics.Vectors.storeInfo(Vectors.java:216) 
04-09 08:18:57.903: ERROR/AndroidRuntime(14378):  at com.prattia.webs.cheaterphysics.Vectors$2.onClick(Vectors.java:67) 
04-09 08:18:57.903: ERROR/AndroidRuntime(14378):  at android.view.View.performClick(View.java:2465) 
04-09 08:18:57.903: ERROR/AndroidRuntime(14378):  at android.view.View$PerformClick.run(View.java:8907) 
04-09 08:18:57.903: ERROR/AndroidRuntime(14378):  at android.os.Handler.handleCallback(Handler.java:587) 
04-09 08:18:57.903: ERROR/AndroidRuntime(14378):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-09 08:18:57.903: ERROR/AndroidRuntime(14378):  at android.os.Looper.loop(Looper.java:123) 

Счетчик, как INT инициализируется в 0, который отслеживает, сколько раз рядом была нажата, чтобы хранить Ванд здесь является частью кода с линиями 67 и 216 отметил:

next.setOnClickListener(new View.OnClickListener() {  
      public void onClick(View v) { 
       error.setText(""); 
       if(value.toString().length()==0||angle.toString().length()==0) 
        error.setText("Must enter both value and angle"); 
       else{ 
        storeInfo(); //67 
        counter++; 
       } 
      } 
     }); 

public void storeInfo(){ 
     Doublify(value); 
     Doublify(angle); 

    //216 info[counter].value = Double.parseDouble(value.getText().toString()); 
     info[counter].angle = Double.parseDouble(angle.getText().toString()); 
     info[counter].radian = rad.isChecked(); 
     if(q1.isChecked()) 
      info[counter].quad=1; 
     if(q2.isChecked()) 
      info[counter].quad=2; 
     if(q3.isChecked()) 
      info[counter].quad=3; 
     if(q4.isChecked()) 
      info[counter].quad=4; 
     angle.setText(""); 
     value.setText(""); 
    } 
+1

Что это Doublify()? Также где вы инициализируете «информацию» и значение? – Shubhayu

+0

Что такое линия № 216 в Vectors.java? – MKJParekh

ответ

0

в строке 64 используется toString на объекте «значения», которое, скорее всего, вернется реализация по умолчанию TextView toString() и, вероятно, не 0 длиной

value.toString() 

но на линии 216 вы используете правильный путь, чтобы получить текстовое значение, и так как вы не испытывали к нему можно быть пустым:

value.getText().toString() 

Изменение в строке 64, чтобы что-то вроде это:

if(value.getText() == null || value.getText().toString().length() == 0) 

(и аналогично для значения angle)

0

Если JScoobyCed ответ разве нулевой указатель, то это может быть массив.

info[counter].value // might be null because array's start at 0 not 1 

может быть, вы хотите:

info[counter - 1].value 
+0

Это, скорее всего, вызовет «ArrayIndexOutOfBoundsException», чем NPE – Squonk

+0

Да, MisterSquonk вы правы, возможно, это будет его следующая ошибка =) –