為android應用添加菜單

添加菜單的方法有很多,一般推薦用xml創建菜單。

建立menu步驟:

在res下建立一個menu文件夾,在menu文件裡面添加一個xml文件:
[html] <?xml version="1.0" encoding="utf-8"?> 
 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/play" 
          android:title="Play" 
          android:visible="true" /> 
    <item android:id="@+id/stop" 
          android:title="Stop"  
          android:visible="true"/> 
</menu> 
<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/play"
          android:title="Play"
          android:visible="true" />
    <item android:id="@+id/stop"
          android:title="Stop"
          android:visible="true"/>
</menu>
將菜單加入應用程序:
要如何在用用程序啟動時加入定義好的菜單呢?在onCreateOptionsMenu()事件裡以MenuInflater將定義好的菜單加入用用程序:
[java] @Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // TODO Auto-generated method stub  
       MenuInflater inflater = getMenuInflater(); 
       inflater.inflate(R.menu.options_menu, menu); 
       return true; 

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // TODO Auto-generated method stub
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);
        return true;
 }
這時,菜單已經添加到應用程序中瞭,但還有一個問題,現在的菜單隻是顯示,並沒有處理觸發菜單的消息,這時可以使用onOptionsItemSelected()事件來自定義消息處理,下面分別是一個停止和播放音樂的菜單實現:
[java] @Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub  
    int item_id = item.getItemId(); 
 
    switch (item_id) { 
    case R.id.play: 
        Intent intent = new Intent(WebTestActivity.this, yypService.class); 
        startService(intent); 
        break; 
    case R.id.stop: 
        this.onStop(); 
        break; 
    default: 
        return false; 
    } 
    return true; 
 

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  int item_id = item.getItemId();

  switch (item_id) {
  case R.id.play:
   Intent intent = new Intent(WebTestActivity.this, yypService.class);
   startService(intent);
   break;
  case R.id.stop:
   this.onStop();
   break;
  default:
   return false;
  }
  return true;

 }
程序效果如下:

摘自 Young的專欄

發佈留言