2012-04-10 50 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初始化持续跟踪有多少次在下一个已被点击,以存储V和这里是与线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 2012-04-10 01:25:14

+0

Vectors.java中的第216行是什么? – MKJParekh 2012-04-10 05:17:01

回答

0

线64上你的“价值”对象,它很可能会回到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 2012-04-10 01:23:38

+0

是的,MisterSquonk你是对的,也许这将是他/她的下一个bug =) – 2012-04-10 01:36:03

相关问题