Android手機專門用一個按鍵「menu「來顯示菜單。 java
要實現菜單功能,首先要經過方法onCreateOptionMenu來建立菜單,建立方法有兩種:一種是直接導入有menu的xml文件,一種是用類Menu的方法直接添加。建立好菜單後,用事件監聽器onOptionItemSelected對可以觸發的事件進行監聽。 android
下面這個例子有兩個Activity,分別有上面的兩種方法實現menu,每一個menu裏都有事件監聽器進行Activity跳轉和退出。 app
1.資源文件下的menu文件res/menu/menu.xml ide
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/about" android:title="關於" /> <item android:id="@+id/exit" android:title="退出" /> </menu>
Activity01.java 佈局
package com.yarin.android.Examples_04_13; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; public class Activity01 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /*建立menu*/ public boolean onCreateOptionsMenu(Menu menu) { //MenuInflater class is used to instantiate menu XML files into Menu objects MenuInflater inflater = getMenuInflater(); //設置menu界面爲res/menu/menu.xml inflater.inflate(R.menu.menu, menu); return true; } /*處理菜單事件*/ public boolean onOptionsItemSelected(MenuItem item) { //獲得當前選中的MenuItem的ID, int item_id = item.getItemId(); switch (item_id) { case R.id.about: /* 新建一個Intent對象 */ Intent intent = new Intent(); /* 指定intent要啓動的類 */ intent.setClass(Activity01.this, Activity02.class); /* 啓動一個新的Activity */ startActivity(intent); /* 關閉當前的Activity */ Activity01.this.finish(); break; case R.id.exit: Activity01.this.finish(); break; } return true; } }
Activity02.java this
package com.yarin.android.Examples_04_13; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class Activity02 extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 設置顯示main2.xml佈局 */ setContentView(R.layout.main2); } /*建立menu*/ public boolean onCreateOptionsMenu(Menu menu) { //爲menu添加內容 menu.add(0, 0, 0, R.string.ok); menu.add(0, 1, 1, R.string.back); return true; } /*處理menu的事件*/ public boolean onOptionsItemSelected(MenuItem item) { //獲得當前選中的MenuItem的ID, int item_id = item.getItemId(); switch (item_id) { case 0: case 1: /* 新建一個Intent對象 */ Intent intent = new Intent(); /* 指定intent要啓動的類 */ intent.setClass(Activity02.this, Activity01.class); /* 啓動一個新的Activity */ startActivity(intent); /* 關閉當前的Activity */ Activity02.this.finish(); break; } return true; } }
本例用到了兩個Activity,不要忘記在AndroidManifest.xml中聲明。 spa