[Android] 如何讓不同Activity共用相同的Menu

Activity加入Menu一文中簡單介紹了如何建立選單,但是在開發Android Application常常遇到一個情況:一個Menu被多個Activity所共用,意思是指這些Activity在執行時,User按下Menu鍵時,都會顯示同一個選單。


要達成上述目的不需要每個Activity都去覆寫onCreateOptionMenu以及onOptionsItemSelected,由於Menu的結構與item按下的處理動作都一致,因此可以善用繼承的特性,先建立一個類別負責實作Menu的建立以及動作處理函式,再讓所有共用Menu的Activity繼承它,就可以達到一個Menu讓多個Activity共用的效果。

程式碼說明:

1. 建立實作onCreateOptionMenu and onOptionsItemSelected的父類別

public class ActivityWithMenu extends Activity{
	
 @Override
 public boolean onCreateOptionsMenu(Menu menu){
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.option_menu, menu);
  return true;
 }
	
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // 針對 item selection id 進行動作處理
  switch (item.getItemId()) {
   case R.id.add:
    Toast.makeText(this, "Add action", Toast.LENGTH_SHORT).show();
    return true;
   case R.id.buy:
    Toast.makeText(this, "Buy action", Toast.LENGTH_SHORT).show();
    return true;
   default:
    return super.onOptionsItemSelected(item);
  }
 }
}

2. 所有共用Menu的Activity繼承已實作Menu的父類別

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

留言

這個網誌中的熱門文章

[Android] layout_weight的妙用-讓View的大小以百分比率顯示(proportionate size)

[Android] 內部儲存體(Internal Storage)的檔案系統讀寫(File I/O)

【海外婚紗】道具行李篇