Вопрос

I apologize in advance for me lack of knowledge with android development, I am very new to this.

I created a game written from scratch in java. If I press the Menu button or Back button, the game will immediately crash. I believe it crashes on the Menu Button because I am using Window.FEATURE_NO_TITLE, and I have no clue why the Back Button crashes the game (sometimes it will crash the game, other times it will back out, then when I open it again the game will crash. If I press the Home Button, then try to return to the application, it will also crash, which I am guessing has something to do with the surfaceCreated method.

Essentially, I do not need these buttons to do anything, so all I really want to do is disable them, which would sound simple enough, but I haven't had any success in doing so.

edit: logcat:

04-14 21:31:25.682: E/InputEventSender(24686): Exception dispatching finished signal.
04-14 21:31:25.682: E/MessageQueue-JNI(24686): Exception in MessageQueue callback: handleReceiveCallback
04-14 21:31:25.712: E/MessageQueue-JNI(24686): java.lang.NullPointerException
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarImplICS.getThemedContext(ActionBarImplICS.java:302)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarImplJB.getThemedContext(ActionBarImplJB.java:20)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarActivityDelegate.getActionBarThemedContext(ActionBarActivityDelegate.java:208)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarActivityDelegate.getMenuInflater(ActionBarActivityDelegate.java:98)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarActivity.getMenuInflater(ActionBarActivity.java:71)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.app.Activity.onCreatePanelMenu(Activity.java:2579)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:232)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:146)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:293)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:507)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:964)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1670)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2227)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4547)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4523)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4128)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4178)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4147)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4232)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4155)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4289)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4128)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4178)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4147)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4155)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4128)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4178)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4147)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4265)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4415)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2213)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1885)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1876)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2190)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.os.MessageQueue.nativePollOnce(Native Method)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.os.MessageQueue.next(MessageQueue.java:132)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.os.Looper.loop(Looper.java:124)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at android.app.ActivityThread.main(ActivityThread.java:5450)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at java.lang.reflect.Method.invokeNative(Native Method)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at java.lang.reflect.Method.invoke(Method.java:525)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
04-14 21:31:25.712: E/MessageQueue-JNI(24686):  at dalvik.system.NativeStart.main(Native Method)
04-14 21:31:25.712: D/AndroidRuntime(24686): Shutting down VM
04-14 21:31:25.712: W/dalvikvm(24686): threadid=1: thread exiting with uncaught exception (group=0x41d3f898)
04-14 21:31:25.732: E/AndroidRuntime(24686): FATAL EXCEPTION: main
04-14 21:31:25.732: E/AndroidRuntime(24686): java.lang.NullPointerException
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarImplICS.getThemedContext(ActionBarImplICS.java:302)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarImplJB.getThemedContext(ActionBarImplJB.java:20)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarActivityDelegate.getActionBarThemedContext(ActionBarActivityDelegate.java:208)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarActivityDelegate.getMenuInflater(ActionBarActivityDelegate.java:98)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarActivity.getMenuInflater(ActionBarActivity.java:71)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.app.Activity.onCreatePanelMenu(Activity.java:2579)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:232)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:146)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:293)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:507)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:964)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1670)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2227)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4547)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4523)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4128)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4178)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4147)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4232)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4155)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4289)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4128)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4178)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4147)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4155)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4128)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4178)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4147)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4265)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4415)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2213)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1885)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1876)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2190)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.os.MessageQueue.nativePollOnce(Native Method)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.os.MessageQueue.next(MessageQueue.java:132)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.os.Looper.loop(Looper.java:124)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at android.app.ActivityThread.main(ActivityThread.java:5450)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at java.lang.reflect.Method.invokeNative(Native Method)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at java.lang.reflect.Method.invoke(Method.java:525)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
04-14 21:31:25.732: E/AndroidRuntime(24686):    at dalvik.system.NativeStart.main(Native Method)
Это было полезно?

Решение

Figured out a solution for myself, Since I am using Window.FEATURE_NO_TITLE I realized extending ActionBarActivity was making it crash when I press the Menu Button, so I changed it to just extend Acitivity. To fix the close and reload, I just killed the game with surfaceDestroyed method.

I don't know why ActionBarActivity is chosen as a default.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top