2012-07-28 125 views
0

我希望能夠展示一個烤麪包或對話框或其他選項,而不是有時會顯示一個菜單,如果按下菜單按鈕的其他行爲。Android的 - 顯示吐司或當菜單按鈕點擊

我嘗試這樣做,但當然也因爲onCreateOptionsMenu不工作被稱爲第一次加載時的活動,而不是當菜單鍵被禁用。有沒有辦法做我想做的事情?

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (disableMenu()) 
     Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show(); 
} 

編輯:我添加了.show(),以便人們不會專注於該部分。這不是導致問題的原因。

+1

請不要這樣做。部分原因是因爲並非所有設備都有MENU按鈕。 http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html – CommonsWare 2012-07-28 18:51:21

+0

我想你缺少.show();表示敬酒 – 2012-07-28 18:51:28

+0

很抱歉,我忘記了放映節目,但這並未影響問題的原因。即使在添加.show()後,當按下菜單按鈕時加載Activity時,Toast也會顯示。 – ajacian81 2012-07-28 18:54:25

回答

2

您忘記了.show(),您應該使用onPrepareOptionsMenu,每次按下菜單按鈕時都會調用它。

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 

    if (disableMenu()) 
     Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show(); 

    return true; 
} 
+1

呵呵,你也忘了'.show()'。 – Sam 2012-07-28 19:27:43

+0

:D抱歉,現在正在編輯... – Lars 2012-07-28 19:42:35

3

你忘了打電話給show()

Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show(); 

編輯:

當你想capture the click of a menu buttin,我想這會工作,但我沒有嘗試:

protected boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     // When Menu Key is pressed 
     Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show(); 
     return true; 
    } 
    return false; 
} 
+0

它不起作用,對不起。 – ajacian81 2012-08-07 12:38:00

1

呼叫.show()用於顯示Toast

Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show(); 

代替

Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG); 
1

你忘了調用show()在你的麪包。

如果這無助於嘗試在onCreateOptionsMenu(菜單菜單) 中返回true,然後在onOptionsItemSelected(MenuItem項目)中實現菜單行爲。

+0

添加true並不能改變活動開始時Toast顯示的事實,而不是菜單按鈕被按下時的事實。 – ajacian81 2012-07-28 18:55:57

+0

沒錯,這就是爲什麼你要給onOptionsSelected添加你的麪包 - 但是當你的菜單中沒有任何項目時,顯然這不會被調用。您是否嘗試實施onKeyDown並檢查KeyEvent.KEYCODE_MENU? – AxelTheGerman 2012-07-28 18:58:46

1

你忘了打電話這是需要顯示敬酒show()方法。

以及執行上的菜單按鈕任何操作,您可以使用下面的方法。像我一樣

重寫onKeyDown(int keyCode, KeyEvent event)方法。

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

     switch (keyCode) 

     case KeyEvent.KEYCODE_MENU: 

     Toast.makeText(getApplicationContext(),"Menu key Pressed", 3000).show();  

      break; 
     } 


       return false; 
    }