当我触摸硬件设置菜单时,我的应用程序崩溃了。我在网上搜索,发现了这个代码:
@Override
public boolean onKeyDown(int keycode, KeyEvent e) {
if (keycode == KeyEvent.KEYCODE_SETTINGS) { //ignore settings key
return true;
} else {
return super.onKeyDown(keycode, e);
}
}
我在我的应用程序中使用了这段代码,但是不工作。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.collection__list_, menu);
return true;
}
堆栈跟踪:
FATAL EXCEPTION: main Process: com.example.nabege, PID: 5944 java.lang.NullPointerException
at android.support.v7.app.ActionBarImplICS.setDisplayHomeAsUpEnabled(ActionBarImplICS.java:179)
at android.support.v7.app.ActionBarImplJB.setDisplayHomeAsUpEnabled(ActionBarImplJB.java:20)
at android.support.v7.app.ActionBarActivityDelegate.getSupportActionBar(ActionBarActivityDelegate.java:86)
at android.support.v7.app.ActionBarActivityDelegate.getActionBarThemedContext(ActionBarActivityDelegate.java:206)
at android.support.v7.app.ActionBarActivityDelegate.getMenuInflater(ActionBarActivityDelegate.java:98)
at android.support.v7.app.ActionBarActivity.getMenuInflater(ActionBarActivity.java:71)
at com.example.nabege.Collection_List_Activity.onCreateOptionsMenu(Collection_List_Activity.java:202) at android.app.Activity.onCreatePanelMenu(Activity.java:2625)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:232)
at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:146)
at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199) at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:293)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:505)
at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:894)
at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1671)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2181)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4492)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4459)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4024)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4078)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4047)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4158)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4055)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4215)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4024)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4078)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4047)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4055)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4024)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4078)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4047)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4191)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4351)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2257)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1907)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1898)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2234)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:138)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dal
此错误可能来自您的R.menu。Collection__list,里面有问题,我有一个类似的问题,这是低堆内存的手机,当它想要午餐一个对话框或活动或菜单,为此,我不得不降低背景图像和其他图片的分辨率在我的布局,它得到了修复。
看起来你隐藏了操作栏
所以getSupportActionBar()
返回null
。然后你尝试访问它,要么是故意的,要么是系统的,设置Home As Up。
引起NullPointerError
如果你不隐藏操作栏,应用程序能工作吗?