为什么当触摸硬件菜单时程序会崩溃



当我触摸硬件设置菜单时,我的应用程序崩溃了。我在网上搜索,发现了这个代码:

@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

如果你不隐藏操作栏,应用程序能工作吗?

最新更新