2013-03-29 5 views
-3

안녕하세요, 일부 코드에 문제가 있습니다. 임 하나의 활동에서 3 정수를 얻으려면 노력하고 그 숫자를 사용하여 캔버스에 동그라미를 그립니다. 여기에 제 2 차 활동 :null 포인터 예외

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; 
} 

}

내가 널 (null) 포인터 예외가이 활동을 시작. Heres는 내 로그 캣 :

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

어디까지입니까? – 323go

+3

Activity2의 어느 행이 '30'입니까? – SudoRahul

+3

Activity2.java:30 line 30? – t0s

답변

0

귀하의 풋 번들 기능은 내가 생각하는 문자열에 감사, acticity2에서 GET 문자열에서이 방법처럼 사용해보십시오.

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

실제로 첫 번째 활동에서 putString 대신 b.putInt를 사용했습니다. 나는 editText에서 정수를 얻기 위해 parseInt를 사용했다. btw Integer.parseInt와 Integer.valueOf의 차이점은 무엇입니까? – HighMrSai

+0

parseint 반환 유형은 프리미티브 유형입니다. valueof는 Integer 래퍼 유형을 반환합니다. [더 나은 이해를 위해이 링크를 사용하십시오] (http://stackoverflow.com/questions/508665/difference-between-parseint-and-valueof-in-java) – Yugesh