2011-07-02 4 views
1

현재 게임을 만들고 있는데이 성가신 문제를 발견했습니다. Google에 그것을 시험해 보았다. 그러나 지금까지 운 없음.Android NullPointer 문제에 대한 도움이 필요합니다.

package graf.grafika; 

public class MyClass { 
    int number; 
} 

그리고 문제가 (응용 프로그램이 예기치 않게 중지) MyMethod라는입니다 :

public class aktivnost extends Activity { 
    MyClass[] myclass = new MyClass[5]; 

    void myMethod() 
    { 
     //Error 
     myclass[0].number = 1; 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     myMethod(); 
     setContentView(new Panel(this)); 
    } 
...other required methods 
} 
나는 클래스 (코드는 여기에 내 게임의 것이 아니라 같은 오류가 단순화 한) 자체 파일에서 정의한

는 로그 캣 :

07-02 10:01:13.507: ERROR/AndroidRuntime(3203): FATAL EXCEPTION: main 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203): java.lang.RuntimeException: Unable to start activity ComponentInfo{graf.grafika/graf.grafika.aktivnost}: java.lang.NullPointerException 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.os.Looper.loop(Looper.java:126) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.app.ActivityThread.main(ActivityThread.java:3997) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at java.lang.reflect.Method.invoke(Method.java:491) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at dalvik.system.NativeStart.main(Native Method) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203): Caused by: java.lang.NullPointerException 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at graf.grafika.aktivnost.myMethod(aktivnost.java:17) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at graf.grafika.aktivnost.onCreate(aktivnost.java:23) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700) 
07-02 10:01:13.507: ERROR/AndroidRuntime(3203):  ... 11 more 

사람은 내가이 문제를 해결하는 데 도움시겠습니까? 나는 자바 프로그래밍 btw에 꽤 새로운 사람이다.

답변

0

myclass[0]은 어떤 개체도 가리 키지 않기 때문에 null입니다. 그것이 널 포인터를 얻는 이유입니다. 당신은 무엇을해야 myclass[0] = new MyClass();

public class aktivnost extends Activity { 
    MyClass[] myclass = new MyClass[5]; 

    void myMethod() 
    { 
     //Error 
     myclass[0] = new MyClass(); 
     myclass[0].number = 1; 
    } 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     myMethod(); 
     setContentView(new Panel(this)); 
    } 
...other required methods 
} 
+0

내가 구문 ... 난 일식을 사용하고 작업을 얻이 수없는 것. aktivnost 클래스를 올바른 방식으로 주석에 다시 써주실 수 있습니까? 나는 바보처럼 들리지만 나는 자바가 처음이다. – Schultzika

+0

@Schultzika - 물론입니다. 내 편집을 참조하십시오 :) –

+0

오, 정말 고마워요 :) 나는 그 선을 첫 번째 선언 아래에 두었습니다. C++ 영향. – Schultzika

0

MyClass에 [] MyClass에 = 새로운 MyClass에 [5] 은 개별 객체가 아닌 배열 객체를 초기화한다는 것을 의미합니다. myclass [0] = new MyClass();와 같이 배열 객체에서 사용할 개별 객체를 초기화해야합니다.

1

은 실제로 배열에 5 개 새로운 클래스에 넣어하려면 :

MyClass[] myclass = new MyClass[5]; 
for(int i = 0; i < 5; i++) 
{ 
myclass[i] = new MyClass(); 
} 
관련 문제