应用程序意外停止。请再试一次

时间:2011-04-23 13:43:47

标签: android nullpointerexception

除非我添加以下代码,否则应用程序将正常运行。

public class TFView extends View{
  private Paint p;
  private ArrayList<Orb> O1;

  /** Called when the activity is first created. */
  public TFView (Context context){
    super(context);
    O1=new ArrayList<Orb>();
    p = new Paint();
    int Orby=0; 
    for(int j=0; j<3; j++){
      int Orbx= 0;

      for(int i=0; i<4; i++)
      {
        O1.add(new Orb(Orbx,Orby,true));
        Orbx+= 40;
      }
      Orby+= 40;
    }
  }


  @Override
  protected void onDraw(Canvas canvas) {

    for(Orb t:O1){
      canvas.drawOval(t.drawOrb(), p);

    }
    p.setColor(Color.BLUE);
    canvas.drawText(String.valueOf(main.getx()), 50, 50, p);
    canvas.drawText(String.valueOf(main.gety()), 50, 80, p);
    canvas.drawText(String.valueOf(O1.size()), 50, 110, p);

    try {  
      Thread.sleep(30);  
    } catch (InterruptedException e) { }

    invalidate(); 
  }
}

所以,我相信我的问题与android不接受我的Arraylist有关。我在我的计算机上运行了一个非常相似的代码,但有些关于Android的东西似乎并不想接受它。这是我的Arraylist中使用的Orb类。

import android.graphics.RectF;

public class Orb {
  static int orbx;
  static int orby;
  public int size;
  static RectF button;

  boolean display;
  public Orb(){
    orbx=0;
    orby=0;
    display=false;
  }
  public Orb(int x, int y, boolean d){
    orbx=x;
    orby=y;
    display=true;

  }
  public RectF drawOrb(){
    button.set(orbx, orby,orbx+30, orby+30);
    return button;
  }
}

那么,为什么android不接受我的Arraylist图纸?谢谢您的帮助。

编辑:所以,我使用以下代码修复了按钮为空的问题  public RectF drawOrb(){

button.set(orbx, orby,orbx+30, orby+30);
if(button!=null)
return button;
else
    return b;
}

现在我收到多个看起来像这样的空指针异常

[2011-04-23 22:31:25 - ddms]null
java.lang.NullPointerException
    at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
    at com.android.ddmlib.Client.sendAndConsume(Client.java:574)
    at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
    at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
    at com.android.ddmlib.Client.getJdwpPacket(Client.java:671)
    at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
    at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)

再次感谢

1 个答案:

答案 0 :(得分:1)

E/AndroidRuntime(  312): java.lang.NullPointerException
E/AndroidRuntime(  312):        at com.djrobotfreak.Think_Fast.Orb.drawOrb(Orb.java:26)

NullPointerException第26行有Orb.java。根据您的商家信息,这似乎是:

button.set(orbx, orby,orbx+30, orby+30);

如果是,button为空。