2011-11-02

用 XML 寫 Android Menu

Android Menu 也是一種 Android resource,所以可以透過 XML 方式來建立。
  • 建立 Menu XML 檔案,檔案名稱不重要,只要符合 resource id 命名條件即可
  • 在 activity 裡讀入 resource
  • 充氣,收工

res/menu/menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 <group android:id="@+id/group">
  <item android:title="壹" android:orderInCategory="1" android:id="@+id/item1"></item>
  <item android:title="參" android:orderInCategory="3" android:id="@+id/item3"></item>
  <item android:title="貳" android:orderInCategory="2" android:id="@+id/item2"></item>
 </group>
</menu>
XMLMenuActivity
public class XMLMenuActivity extends Activity {

 private int total;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // 就這樣
  MenuInflater mi = this.getMenuInflater();
  // 檔案名稱成為 resource id,可以有多個 menu 檔案
  mi.inflate(R.menu.menu, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  TextView tv = (TextView) this.findViewById(R.id.tv);
  switch (item.getItemId()) {
  case R.id.item1:
   this.total += 10;
   break;
  case R.id.item3:
   this.total += 30;
   break;
  case R.id.item2:
   this.total -= 20;
   break;
  default:
   // 交給別人來處理,有可能是 system menu
   return super.onOptionsItemSelected(item);
  }
  tv.setText(tv.getText() + "\n" + item.getTitle() + " -> " + this.total);
  // 回傳 true 表示已經處理完畢,不用再往外丟了
  return true;
 }
}

沒有留言:

張貼留言