2013-06-15 5 views
-2

привет, у меня есть «странная» проблема с моим кодом, это то, что журнал говорит:java.lang.RuntimeException: не удалось запустить активность ComponentInfo {com.example.ball_anim/com.example.ball_anim.Main}: java.lang.NullPointerException

06-15 17:06:38.054: E/AndroidRuntime(5699): FATAL EXCEPTION: main 
06-15 17:06:38.054: E/AndroidRuntime(5699): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ball_anim/com.example.ball_anim.Main}: java.lang.NullPointerException 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.os.Looper.loop(Looper.java:137) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at dalvik.system.NativeStart.main(Native Method) 
06-15 17:06:38.054: E/AndroidRuntime(5699): Caused by: java.lang.NullPointerException 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at com.example.ball_anim.Main$MyView.<init>(Main.java:86) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at com.example.ball_anim.Main.onCreate(Main.java:48) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.Activity.performCreate(Activity.java:5008) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  ... 11 more 

при вызове класса пользовательских методов Gametime в главных class..this появляется ошибка мой класс GameTime.java

public class GameTime extends CountDownTimer{ 
    public long Tempo_Trascorso; 
    private final long startTime = 10000; 
    private boolean End=false; 
    private long Tempo_Stop; 

     public GameTime(long startTime, long interval){ 
      super(startTime, interval); 
       } 
       @Override 
       public void onFinish(){ 
        System.out.println("Finish!"); 
        End = true; 

       } 

       @Override 
       public void onTick(long millisUntilFinished){ 
        System.out.println("Time Restante:" + millisUntilFinished); 
        Tempo_Trascorso = startTime - millisUntilFinished; 
        if(End == false){ 
        Tempo_Stop=millisUntilFinished; 
        } 
        } 
       //Custom method #1 get the time when the game thread is stopped 
       public long getLastTime(){ 
        return Tempo_Stop; 
       } 
       //Custom method #2 get the true/false when the time is end 
       public boolean getEndGame(){ 
        return End; 
       } 


} 

Main.java

public class Main extends Activity { 
private Bitmap Player_bmp,Player_bmp_StateLV1,Player_bmp_StateLV2,Player_bmp_StateLV3,Life_bmp,Lose_bmp; 
private SurfaceHolder holder; 
private AnimationThread AnimThread; 
private GameTime GameTime; 
private DialogBox Dbox; 
private Random rnd; 
private int Display_width,Display_height; 
private int RandomPosx; 
private int Rosso,Verde,Blu; 
private Paint paint,paint_L; 
private float deltaX,deltaY; 
private boolean Drag = false,Collision = false,Stop = false; 
private int Static_PositionX,Static_PositionY; 
private List<Sfere> C_Sfere = new ArrayList<Sfere>(); 
private int Life,LostLife=0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(new MyView(this)); 


    } 
public class MyView extends SurfaceView { 

     public MyView(Context context) { 
      super(context); 
// More code(too long) 

} 

Edit: это OnCreate главной и MyView класса при создании SurfaceView и игровой материал, не поместить весь код, потому что это слишком долго, если нужно подробнее рассказать мне;)

где-нибудь в основной класс, вызовите пользовательские методы приложения GameTime. Я хочу уточнить, что там, где основной класс дает мне ошибку в классе, посвященный DialogBox (к примеру) не имеет ошибки ошибки

+2

post Main.java, – Blackbelt

+2

Посмотрите на строку 48 'at com.example.ball_anim.Main.onCreate (Main.java:48)' и проверьте, что может быть нулевым. –

+1

У вас есть исключение с нулевым указателем. Вы запустили это через отладчик? – nil

ответ

0

В журнале вы можете увидеть, что исключение произошло в

06-15 17:06:38.054: E/AndroidRuntime(5699): Caused by: java.lang.NullPointerException 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at com.example.ball_anim.Main$MyView.<init>(Main.java:86) 

Итак, вы должны проверить свой конструктор MyView по строке 86 в файле Main.java.

Вы не разместили свой код, поэтому мы не можем больше помочь вам.

3

Наличие NullPointerException является одной из наиболее распространенных ошибок, которые вы получите при написании программы. Надеюсь, это одна из самых простых ошибок в исправлении.

Когда выброшено NullPointerException?

Брошено, когда приложение пытается использовать null в случае, когда требуется объект . К ним относятся:

  • Вызов метода экземпляра нулевого объекта.
  • Доступ или изменение Поле нулевого объекта.
  • Принимая длину null, как если бы это был массив .
  • Доступ или изменение слотов нулевого значения, как если бы это был массив .
  • Бросание нуль, как если бы это было значение Throwable.
  • Приложения должны бросать экземпляры этого класса, чтобы указать другие незаконные использования нулевого объекта.

Теперь, когда вы читаете возможные случаи, когда оно брошено, научиться читать сообщения из LogCat, они часто информативными.В вашем случае важная информация для чтения происходит от Caused By линии:

06-15 17:06:38.054: E/AndroidRuntime(5699): Caused by: java.lang.NullPointerException 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at com.example.ball_anim.Main$MyView.<init>(Main.java:86) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at com.example.ball_anim.Main.onCreate(Main.java:48) 
06-15 17:06:38.054: E/AndroidRuntime(5699):  at android.app.Activity.performCreate(Activity.java:5008) 

Если вы внимательно посмотрите, вы увидите, что ошибка возникает в строке 86 файла Main.java (т.е. at com.example.ball_anim.Main$MyView.<init>(Main.java:86)).

Итак, взгляните на эту строку и посмотрите, что может быть null. В вашем случае вы указали свою переменную GameTime, но вы забыли ее инициализировать, поэтому, когда вы пытаетесь вызвать метод getLastTime() на ней, вызывается NPE.

+0

еще раз спасибо вам за помощь ^^ – Keyren

+0

@Keyren Добро пожаловать. Хорошее кодирование =) –

Смежные вопросы