2013-04-25 50 views
2

我跟着this tutorial,顯示菜單選項時,返回值在這一行真正的2個不同的菜單選項:myMenuInflater.inflate(R.menu.menu, menu);如何顯示在一個單一的活動

如何添加另一個菜單選項,當值返回false?我想在同一菜單按鈕中顯示2個不同的菜單選項。我的代碼:

import android.view.MenuItem; 
import android.widget.Toast; 
public class AndroidOptionMenu extends Activity { 
    /** Called when the activity is first created. */ 
    @Override public void onCreate(Bundle savedInstanceState) 
    {  
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
    @Override public boolean onCreateOptionsMenu(Menu menu) 
    { 
     MenuInflater myMenuInflater = getMenuInflater(); 
     myMenuInflater.inflate(R.menu.menu, menu);  
     return true; 
    } 
    @Override public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch(item.getItemId()) { 
     case(R.id.menu_OK): 
      Toast.makeText(this, "OK", Toast.LENGTH_LONG).show(); 
      break; 
     case(R.id.menu_help): 
      Toast.makeText(this, "Help", Toast.LENGTH_LONG).show(); 
      break; 
     case(R.id.menu_Cancel): 
      Toast.makeText(this, "Cancel", Toast.LENGTH_LONG).show(); 
      break; 
     } 
     return true; 
    } 
} 
+0

我不認爲你完全理解代碼示例向你展示的是什麼。爲什麼不嘗試將MenuInflater的返回值更改爲false並查看會發生什麼?如果你沒有看到任何菜單,你會感到驚訝嗎? – MarsAtomic 2013-04-25 07:26:17

+0

我想顯示兩個不同的菜單選項,當值爲真,當值爲假 – 2013-04-25 07:29:31

+0

請閱讀此選項菜單教程: http://mobile.tutsplus.com/tutorials/android/android-sdk-implement-an- options-menu/ 您永遠不會遇到MenuInflater返回false因爲硬編碼返回true的情況。爲什麼它總是迴歸真實?因爲如果它返回false,菜單根本不會打開。 你的問題是你對Android選項菜單沒有足夠的理解。請花時間研究並瞭解互聯網上提供的衆多選項菜單教程中的任何一個。 – MarsAtomic 2013-04-25 07:41:45

回答

2

你不能。

至少不使用onCreateOptionsMenu()的返回值。

Android Doc for onCreateOptionsMenu()You must return true for the menu to be displayed; if you return false it will not be shown.

你需要找到另一種方式來決定何時,以顯示你的第一個,當顯示第二個菜單,那麼你可以做:

@Override public boolean onCreateOptionsMenu(Menu menu) 
{ 
     MenuInflater myMenuInflater = getMenuInflater(); 
    if(showFirstMenu) 
    { 
     myMenuInflater.inflate(R.menu.menu, menu);  
    } else { 
     myMenuInflater.inflate(R.menu.menu2, menu); // here you show the other menu 
    } 
     return true; 
} 
+0

如何設置值以顯示最低值或第二? – 2013-04-25 08:04:25

+0

這個showFirstMenu有什麼價值? – 2013-04-25 08:04:58

+0

showFirstMenu當您想要顯示menu1和menu2時,您需要關注... – SilentKiller 2013-04-25 08:33:57

1

我記得,您可以使用onPrepareOptionsMenu設置運行時在菜單中顯示的菜單項。您可以將菜單項分組爲第一個菜單或第二個菜單項,然後選擇要顯示的菜單項。 你可以嘗試;

@Override 
    public boolean onPrepareOptionsMenu(Menu menu) 
    { 

     MenuInflater myMenuInflater = getMenuInflater(); 
     if(condition) 
     { 
      myMenuInflater.inflate(R.menu.menu, menu);  
     } else { 
      myMenuInflater.inflate(R.menu.menu2, menu); // here you show the other menu 
     } 
     return true; 
    } 

我希望這樣的作品。

相關問題