2011-07-02 3 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 
} 

Logcat:

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 

誰も私がこの問題を解決する助けてくださいもらえますか?私はJavaプログラミングのbtwにはかなり新しいです。

答えて

0

myclass[0]は、どのオブジェクトも指していないため、nullです。だから、あなたは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クラスを正しい方法でコメントに書き直してください。私はそれがばかげて聞こえるが、私は非常にjavaに新しいです知っている。 – Schultzika

+0

@Schultzika - もちろん。私の編集を参照してください:) –

+0

owwありがとうございます:)私は最初の宣言の下にその行を置いていた。私が推測するC++の影響。 – Schultzika

0

MyClassの[]はMyClass =新しいMyClassの[5]を行う必要があります。 は、個々のオブジェクトではなく配列オブジェクトを初期化することを意味します。myclass [0] = new MyClass();のように配列オブジェクトで使用する個々のオブジェクトを初期化する必要があります。実際に、アレイ内の5つの新しいクラスに入れて

1

:私は構文が働くように見えることはできません

MyClass[] myclass = new MyClass[5]; 
for(int i = 0; i < 5; i++) 
{ 
myclass[i] = new MyClass(); 
} 
関連する問題