2012-07-31 53 views
3

由於某種原因,如果我長時間按下我的菜單按鈕,而我的應用程序正在加載內容,它只是停止就像我按下了回車鍵。如何完全禁用android上的菜單按鈕?

我不想要的菜單按鈕,這樣的表現,所以我的問題是:

我怎麼可以完全地禁用菜單按鈕?我從來沒有需要它在我的應用程序,我只是想關閉它。

我想:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event){ 

    if (keyCode == KeyEvent.KEYCODE_BACK){ 
     onBackPressed(); 
    } 


    if (keyCode == KeyEvent.KEYCODE_MENU){ 
     return true; 
    } 
    else{ 
     return super.onKeyDown(keyCode, event); 
    } 

} 

菜單按鈕仍在工作......

任何幫助將不勝感激! 謝謝。

+0

如果使用ProgressDialog下載數據然後設置ProgressDialog取消真。那麼你不需要禁用後退菜單。 – 2012-07-31 09:18:37

+0

在一些三星手機長按菜單被映射到搜索。如果您的手機是三星,則返回true for Search鍵 – nandeesh 2012-07-31 09:31:38

+0

沒有任何工作,如果我長按菜單按鈕,我的進度對話框被取消,我的應用程序崩潰。我真的需要一種方法來殺死這個愚蠢的菜單按鈕,我不需要它,爲什麼我不能把它關掉? – 2012-07-31 11:08:57

回答

10

您必須返回true才能顯示菜單;如果您返回false,則不會顯示。 所以我猜測這將工作:

@Override 
public boolean onPrepareOptionsMenu (Menu menu) { 
    .... ..... 
    return false; 
} 
+0

如果我只想「禁用」它,不要隱藏它,那麼? – Darpan 2015-06-11 08:44:37

+0

從API-11開始,此方法已更改。 '公共無效onPrepareOptionsMenu(菜單菜單)' – 2015-10-02 06:12:53

+0

此方法不繼承AppCompatActivity – 2015-10-24 10:50:17

0

我不得不禁用菜單按鈕,以及,我所做的是添加以下行:

public boolean dispatchKeyEvent(KeyEvent event) { 
    return true; 
} 

這基本上告訴OS在已處理的地方按下所有按鈕,因此不採取任何行動。在onCreate方法之後添加它。

0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    return (keyCode == KeyEvent.KEYCODE_MENU ? true : super.onKeyDown(keyCode, event)); 
} 
3

您必須返回false

@Override 
public boolean onMenuOpened(final int featureId, final Menu menu) { 
    super.onMenuOpened(featureId, menu); 
    return false; 
} 
+1

當我嘗試了所有的onkeydown /的onkeyup/dispatchTouchEvent/onPreparedOptionsMenu方法很好地工作。這是唯一爲我工作的人 – user2968401 2015-06-11 23:43:47

+0

與您的代碼一起使用AppCompatActivity – 2015-10-24 10:50:35

0

您發佈應該工作的人,
還是試試這個,它應該工作

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    final int keyCode = event.getKeyCode(); 
    if (keyCode == KeyEvent.KEYCODE_MENU){ 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
+0

我得到錯誤變量keyCode已經定義。 – 2016-05-12 07:38:47