Не удается начать новую активность в Android

java android

103 просмотра

1 ответ

Я пишу игру, и мне нужно сменить деятельность, когда игра закончится. Моя проблема в том, что у меня есть класс GameLogic Java, который распространяется на Activity, он не является основным классом Activity.

Итак, у меня есть метод gameover в классе GameLogic, который возвращает логическое значение. Если он возвращает false, он должен переключиться на второе действие, но это не так. Это возвращается null.pointer.exception.

Вот код:

public void gameOver(GameData data){

        if(!intersect(data)){

            Intent intent = new Intent(GameLogic.this , SecondActivity.class);
            startActivity(intent);

        }
}

и я вызываю этот метод в классе GameData в методе OnDraw, потому что метод OnDraw всегда должен контролировать, является ли он игровым или нет

protected void onDraw(Canvas canvas){
.........
....
......
.....
............
logic.gameOver(this);

}

ОШИБКА:

08-20 14: 13: 58.293 29830-29830 / com.example.msimsi.myapplication E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное

Процесс: com.example.msimsi.myapplication, PID: 29830
java.lang.NullPointerException: попытка вызвать виртуальный метод

'java.lang.String android.content.Context.getPackageName ()' для пустой ссылки на объект на android.content.ContextWrapper.getPackageName (ContextWrapper.java:132) на android.content.ComponentName. (ComponentName.java:77) на android.content.Intent. (Intent.java:4160) на com.example.msimsi.myapplication.GameLogic.gameOver (GameLogic.java:230) на com.example.msimsi.myapplication.GameData.onDraw (GameData.java:86) на android.view.View.draw (View.java:15231) на android.view.View.updateDisplayListIfDirty (View.java:14167) на android.view.View.getDisplayList (View.java) : 14189) в android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3389) в android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3368) на android.view.View.updateDisplayListIfDirty (View.java:14127) на android.view.View.getDisplayList (View.java:14189) на android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3389) на андроиде. view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3368) в android.view.View.updateDisplayListIfDirty (View.java:14127) на android.view.View.getDisplayList (View.java:14189) на android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3389) на android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3368) на андроиде. view.View.updateDisplayListIfDirty (View.java:14127) в android.view.View.getDisplayList (View.java:14189) в android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3389) в android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3368) в android.view.View.updateDisplayListIfDirty (View.java:14). view.View.getDisplayList (View.java:14189) в android.view.ViewGroup.recreateChildDisplayList (ViewGroup.java:3389) на android.view.ViewGroup.dispatchGetDisplayList (ViewGroup.java:3368) на android.view.View.updateDisplayListIfDirty (View.java:14127) на android.view.View.getDisplayList (View.java:14189) на андроиде. view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:273) в android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:279) в android.view.ThreadedRenderer.draw (ThreadedRenderer.java:318) в android.view.ViewRootImpl.draw (ViewRootImpl.java:2530) в android.view.ViewRootImpl.performDraw (ViewRootImpl.java:235). view.ViewRootImpl.performTraversals (ViewRootImpl.java:1982) в android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1061) в android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:5885) в android.view.Choreographer $ CallbackRecord.run (хореограф.java:767) в android.view.Choreographer.doCallrapj ) на android.view.Choreographer.doFrame (Choreographer.java:550) на android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:753) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) на android.os.Looper.loop (Looper.java:135) на android. app.ActivityThread.main (ActivityThread.java:5254) в java.lang.reflect.Method.invoke (собственный метод) в java.lang.reflect.Method.вызвать (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698)

Автор: EMRE ALP Источник Размещён: 08.11.2019 11:25

Ответы (1)


0 плюса

Вам нужно получить контекст приложения.

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(intent);

Я не эксперт.

Автор: Initerworker Размещён: 20.08.2016 02:29
Вопросы из категории :
32x32