2013-03-29 131 views
-3

嗨即时通讯有问题的一些代码。我试图从一个活动获得3个整数,并使用这些数字在画布上绘制一个圆。这里是我的第二个活动:空指针异常

public class Activity2 extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Bundle b = getIntent().getExtras(); 
    int x = b.getInt("X"); 
    int y = b.getInt("Y"); 
    int r = b.getInt("R"); 


    Canvas canvas = new Canvas(); 
    View canView = new View(this); 
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)canView.getLayoutParams(); 
    params.height = 300; 
    params.width = 400; 
    params.addRule(RelativeLayout.CENTER_HORIZONTAL); 



    Rect rec = new Rect(); 
    rec.set(0,0, 400, 300); 
    Paint paint = new Paint(); 
    Paint paint2 = new Paint(); 
    paint2.setColor(Color.BLUE); 
    paint.setColor(Color.BLACK); 
    canvas.drawRect(rec, paint); 
    canvas.drawCircle(x, y, r, paint2); 



    canView.setLayoutParams(params); 
    canView.draw(canvas); 
    setContentView(canView); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.activity2, menu); 
    return true; 
} 

}

当开始这个活动,我得到一个空指针异常。继承人我的logcat:

FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mrsai.exampleactivity/com.mrsai.exampleactivity.Activity2}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 
at android.app.ActivityThread.access$600(ActivityThread.java:140) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4898) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775) 
at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.NullPointerException 
at com.mrsai.exampleactivity.Activity2.onCreate(Activity2.java:30) 
at android.app.Activity.performCreate(Activity.java:5206) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 
... 11 more 

编号非常感谢任何帮助:)

+4

30是哪里? – 323go

+3

Activity2中哪行是'30'? – SudoRahul

+3

Activity2.java:30第30行? – t0s

回答

0

你放包的功能是在字符串我想,尝试像这样在acticity2 GET字符串。

String xx = b.getString("X"); 
int x = Integer.valueOf(xx); 
+0

实际上在第一次使用b.putInt而不是putString的活动中。我用parseInt从editText获取整数。 btw什么是Integer.parseInt和Integer.valueOf之间的区别? – HighMrSai

+0

parseint返回类型是原始类型。 valueof返回Integer包装类型。[使用此链接以获得更好的理解](http://stackoverflow.com/questions/508665/difference-between-parseint-and-valueof-in-java) – Yugesh